我正在设计一个可能的PHP MySQL项目的数据库,我可能正在进行。 我是关系数据库设计的完全新手,而且之前只使用过单表数据库。这个数据库需要多少?
这是表的示意图:
所以,“汽车”包含汽车的每个模型,并且其他3个表包含该车可装配有部件。 因此,每辆车可以从三个表中的每一个具有不同的部件,并且每个部件可以从部件表安装到不同的汽车。实际上,这些零件表中大约有10个。
那么,将这些链接在一起的最佳方法是什么?我需要另一张桌子在中间等吗? 以及在链接方面我需要做什么。
我正在设计一个可能的PHP MySQL项目的数据库,我可能正在进行。 我是关系数据库设计的完全新手,而且之前只使用过单表数据库。这个数据库需要多少?
这是表的示意图:
所以,“汽车”包含汽车的每个模型,并且其他3个表包含该车可装配有部件。 因此,每辆车可以从三个表中的每一个具有不同的部件,并且每个部件可以从部件表安装到不同的汽车。实际上,这些零件表中大约有10个。
那么,将这些链接在一起的最佳方法是什么?我需要另一张桌子在中间等吗? 以及在链接方面我需要做什么。
你的部件有一些继承。公共属性似乎是:
也有一些细节你的部分型号汽车排气,软件和摄入。 有两种策略: - 在三个表格中有三个表格和一个视图 - 有一个表格包含parttype列,可能有三个视图用于表格。
如果你想玩你的设计,你可能想看看我的公司网站http://www.uml2php.com。 UML2PHP会自动将您的UML设计转换为数据库设计,并让您“玩”结果。
At: http://service.bitplan.com/uml2phpexamples/carparts/ 你可以在你的设计中找到一个示例应用程序。该菜单不允许您通过菜单访问所有表格。
经由: http://service.bitplan.com/uml2phpexamples/carparts/index.php?function=dbCheck
表格定义是可访问的:
mysql> describe CP01_car;
+-------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------+-------+
| oid | varchar(32) | NO | | NULL | |
| car_id | varchar(255) | NO | PRI | NULL | |
| model | varchar(255) | YES | | NULL | |
| description | text | YES | | NULL | |
| model_year | decimal(10,0) | YES | | NULL | |
+-------------+---------------+------+-----+---------+-------+
的MySQL>描述CP01_part;
+-------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| oid | varchar(32) | NO | | NULL | |
| part_number | varchar(255) | NO | PRI | NULL | |
| price | varchar(255) | YES | | NULL | |
| car_car_id | varchar(255) | YES | | NULL | |
+-------------+--------------+------+-----+---------+-------+
mysql> describe cp01_exhaust;
+-------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| oid | varchar(32) | NO | | NULL | |
| type | varchar(255) | YES | | NULL | |
| part_number | varchar(255) | NO | PRI | NULL | |
| price | varchar(255) | YES | | NULL | |
+-------------+--------------+------+-----+---------+-------+
mysql> describe CP01_intake;
+-------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| oid | varchar(32) | NO | | NULL | |
| part_number | varchar(255) | NO | PRI | NULL | |
| price | varchar(255) | YES | | NULL | |
+-------------+--------------+------+-----+---------+-------+
mysql> describe CP01_software;
+-------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------+-------+
| oid | varchar(32) | NO | | NULL | |
| power_gain | decimal(10,0) | YES | | NULL | |
| part_number | varchar(255) | NO | PRI | NULL | |
| price | varchar(255) | YES | | NULL | |
+-------------+---------------+------+-----+---------+-------+
上述表格是从UML模型生成的,结果并不符合您的需求。 特别是如果你觉得有10个或更多的桌子喜欢这个。应将所有表格中的车辆car_car_id链接到车台。并根据该设计方案用于份基“表”应该是这样的图:
的MySQL>
create view partview as
select oid,part_number,price from CP01_software
union select oid,part_number,price from CP01_exhaust
union select oid,part_number,price from CP01_intake;
当然car_car_id列也需要选择;
现在您可以自行编辑每个表格,而且partview会将所有零件一起显示。 为了能够区分您想添加另一列“part_type”的零件类型。
请原谅我的无知,但是您的意思是“意见”是什么意思?谢谢! – 2012-07-29 16:30:46
简短的回答是,您可以使用CREATE VIEW命令创建一个SQL视图,而不是像使用表一样使用它。对于长时间的回答,我会发布一个链接tommorow。 – 2012-07-29 20:48:53
请注意,只要您链接到您自己的网站/产品,就会披露*必填*。你在这篇文章中已经这样做了。我强烈建议编辑这篇文章来解决这个问题,以便这篇文章不会被删除为垃圾邮件。 – 2012-10-15 23:36:42
我会这样做。而不必为汽车零部件三个不同的表:
通过这种方式,添加新零件更容易(因为您不需要新表),并且它更接近标准化。
编辑说现在会有大约10个“零件”表 – 2012-07-29 16:23:56