看板 Database 關於我們 聯絡資訊
資料庫名稱:MySQL 我只有非常基本的資料庫的經驗,如果問題太笨,請見諒 m(_ _)m 舉例來說,假設一個人的 TABLE 的欄位有名字、地址、和個人照片: TABLE ================================== NAME PICTURE ADDRESS 因為某些原因,一個人可以有多個圖片和地址, 最簡單的 TABLE 可以寫成這樣: TABLE ================================== NAME PICTURE_1 PICTURE_2 PICTURE_3 ADDRESS_1 ADDRESS_2 ADDRESS_3 ... 但是因為某些原因,我們被要求一個人的圖片和地址的總數不能有上限, 有人可能沒圖片與地址,有人可能有上百個圖片和地址, 請問這種情況的 TABLE 要長成什麼樣,或是資料庫要怎麼設計呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.102.183 ※ 文章網址: http://www.ptt.cc/bbs/Database/M.1411287259.A.02C.html
GoalBased: 一張訂單,你不確定裡面會有多少細項的時候 09/21 16:31
GoalBased: 你會怎麼設計? 09/21 16:31
rockchangnew: 兩張表,一張存人,一張存地址,然後兩張表相互關連 09/21 17:40
感謝二位的回答,我是有想過,但是實作上做起來怪怪的,舉例來說: CREATE TABLE people_table { name varchar(32) address_table_name varchar(64) picture_table_name varchar(64) } 然後每次產生一個人的時候,做以下的事: // 先 inert 一個人進去 people_table // 然後用該人的 primary key 加上 _address/_picture 產生二個新的 table // 先假設 primary key 叫 meowyih 好了 INSERT into people_table (name, address_table_name, picture_table_name) values ('meowyih', 'meowyih_address', 'meowyih_picture' ); CREATE TABLE meowyih_address { address varchar(64) } CREATE TABLE meowyih_picture { picture varchar(64) } 也就是每次產生一個人的時候,用他的 Primary key 加幾個字元, 產生該人專屬的 Picture 和 Address 的 Table, 這樣做是對的嗎? 感覺怪怪的... :( ※ 編輯: meowyih (36.231.102.183), 09/21/2014 18:18:59
Kenqr: 3個table,第1個table存people_id和name,第2個table存 09/21 19:56
Kenqr: people_id和address,第3個table存people_id和picture 09/21 19:56