作者meowyih (meowyih)
看板Database
标题[SQL ] 新手求助,总数上限不确定的资料栏位
时间Sun Sep 21 16:14:16 2014
资料库名称: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://webptt.com/cn.aspx?n=bbs/Database/M.1411287259.A.02C.html
1F:→ GoalBased: 一张订单,你不确定里面会有多少细项的时候 09/21 16:31
2F:→ GoalBased: 你会怎麽设计? 09/21 16:31
3F:推 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
4F:推 Kenqr: 3个table,第1个table存people_id和name,第2个table存 09/21 19:56
5F:→ Kenqr: people_id和address,第3个table存people_id和picture 09/21 19:56