mysql資料表的一對多 多對多

來源:互聯網
上載者:User
關鍵字 php

我想請問下資料表的簡單設計
一個一對多 為何要在多表添加欄位 而不在1表添加 請舉例
多對多 為什麼要把形成第三個表 形成一對多 而不在他們的表各添加一個欄位呢?
我要詳細的解釋

回複內容:

我想請問下資料表的簡單設計
一個一對多 為何要在多表添加欄位 而不在1表添加 請舉例
多對多 為什麼要把形成第三個表 形成一對多 而不在他們的表各添加一個欄位呢?
我要詳細的解釋

我終於看到了一個傻逼問題,你和幾個人喝一杯飲料,一杯飲料對多個人,也就是一對多,難道不是每個人拿個管子插到那杯飲料裡面去?也就是每個人有一個欄位儲存上面關聯的飲料。
好了,多對多,假設兩個表都有一個欄位來儲存關係,那麼每新增一個對應關係你就需要在當前資料列新增一個關聯資料到那個欄位對吧?你以逗號分隔還是以什麼分隔這個Id我不管,但是結構夠清晰嗎?怎麼想都不太符合常規邏輯啊。這個我懶得解釋了。

編輯了半天,最後總結一下算了。
百度一下:第三範式

為了減少資料冗餘

問題一:一對多在多表加欄位僅僅是因為 ‘這個時候一是主表多是輔表,所以外鍵放在多上’,這個是業務需求定的,你完全可以放在一上,那樣的話多是主表,一是輔表,外鍵在一上。
問題二:你說的那樣是可行的,但是,成本過高(開發成本和維護成本),開發難度相對增大,維護成本增大。多對多普遍慣例就是新增一個第三方表。

官方著回答就是(這種反範式化設計)

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.