在我目前的项目中,我有关于颜色的数据。 每种颜色都是真彩色(带有RGB值)或者是多层颜色中存在的“容器颜色” 这可能会创建循环引用,必须在应用程序级别捕获(但another question)
所以我有
Colors
------
+ (PK) Id
ColorComposition
-----------
+ (PK) Id
+ (FK) MotherColorId
+ (FK) ChildColorId
当我将它们添加到我的Linq2Sql架构中时,我得到了奇怪的关系。这让我怀疑我的结构。
颜色应该有0到多个ColorCompositions(Color.Id => ColorComposition.MotherColorId)
ColorComposition应该有多种颜色(ColorComposition.ChildColorId => Color.Id)
正确解释第一个关系,但第二个关系不正确。这是错误的方向。
我应该如何根据外键定义最后一个关系?
答案 0 :(得分:3)
听起来你正试图存储非循环有向图。尝试google搜索'sql非循环有向图'。这是最好的结果:
A Model to Represent Directed Acyclic Graphs (DAG) on SQL Databases
您的'MultiColor'表格名称令人困惑。考虑将其更改为“ColorComposition”?
答案 1 :(得分:0)
添加另一个列名称,如状态,并将母亲和孩子放在此列中。 在您的关联工作正常后,根据ID在Multicolor表中仅使用一个fkColourid更新此状态列中的状态。