【发布时间】:2017-08-04 03:53:15
【问题描述】:
我有一个关于关系数据库设计的一般性问题。我有一个表中的大量对象列表。这些对象被分类为三个描述符类。有distributor1、distributor2和distributor3。为了描述一个对象,人们总是构建这些描述符的三元组。
例如假设描述符 1 是颜色,描述符 2 是大小,描述符 3 是重量。对于每个对象,我会构建一个描述该对象的三元组。 就我而言,每个描述符都有数千个条目。所以我为每个描述符建立一个表。我现在如何构建三元组并将其与对象表中的对象相关联?
如果每个对象只有一个这样的三元组,我可以将每个对象中的三个描述符 id 作为外键存储,但我们假设每个对象可以有 0 个或多个这样的三元组。
我正在使用 sqlalchemy,但我很乐意自己编写代码,我只是在文档中寻找要查找的关键字,因为到目前为止我找不到太多。
我的解决方案是创建另一个具有三个描述符 ID 和对象 ID 的表。这是要走的路吗? 我还可以在每个对象中存储一个包含三倍描述符 id 的字符串……但这似乎非常违反关系数据库的原则……
【问题讨论】:
-
如果每个对象总是有这三个值,我会创建一个新表:obect_id、attr1_id、attr2_id、attr3_id。但是,如果有任何差异,我会将每个属性及其值存储在与其他属性不同的行中。
-
“但是,如果有任何差异,我会将每个属性及其值存储在与其他属性不同的行中”是什么意思?
标签: database sqlalchemy relational-database relationship flask-sqlalchemy