【发布时间】:2013-11-15 22:51:00
【问题描述】:
我有一张满是物品的桌子,目前只有一种类型,关于该物品的所有内容都在同一张桌子上。现在我想再添加两种类型。每种类型都有许多列(>10)是唯一的,所以我不想在表中有 30 列时其中 20 列是空值,所以我正在考虑将它们拆分:
tbl_items_common
tbl_items_type1 [for data unique to this type]
tbl_items_type2 [for data unique to this type]
tbl_items_type3 [for data unique to this type]
所有表格都有一个公共字段“id”,用于匹配项目和数据。
现在我在考虑编码和思考:
我应该把这些分开吗,还是应该只有一张大桌子。使插入和查询更容易,但数据库有点“混乱”。
拆分数据会使数据库更加孤立,但会使代码更加复杂。
或者,我可以只使用 3 个完全独立的表,它们之间的某些列相同,但是我不确定如何生成一个在所有 3 个表中唯一的唯一 ID。
如果我决定拆分数据,是否可以在一个查询中获取所有数据(可能是嵌入案例/选择?),或者我必须先执行 SELECT 以查找项目类型,然后再查找另一个获取其余数据?在报告方面并不漂亮。
那么我想知道什么? (1) 你会选择哪种方法,(2) 如果你选择第二种,你会如何查询这些数据?
【问题讨论】:
-
你可以这样做:创建一个表
types然后你有你的表itens然后创建一个表itens_types这是一个多对多的关系。如果需要,您可以拥有一个表 types_attributes,然后您将获得类型和 itens 所需的信息。
标签: mysql sql sql-server tsql