键,列表,值

时间:2009-09-17 18:59:11

标签: sql-server linq-to-sql database-design

我想我已经在这里做了一个非常愚蠢的角落。让我告诉你架构。我已经有了很多东西,但我突然意识到一个大问题。

Units
- UnitId

Rings
- RingId

Keys
- RingId (FK)
- KeyId (PK)
- KeyLiteral (FK)
- KeyValue

Literals
- LiteralId
- LiteralValue

好一阵子。基本上,创建单位然后给予KeyRing。对于该环,添加了密钥,每个密钥可以具有值和文字的ID(以防止重复)。

这太好了,很棒。工作得很完美。可以毫无障碍地为项添加新属性,不再需要硬编码表。好哇。

然后我意识到某些项目需要是可能项目列表中的值。好的,没问题。

Lists
- ListId

ListItems
- ListId (FK)
- ListItemId (PK)
- ListItemValue

哦,是的,现在我有办法制作清单。但是....... 如果它只是我在KeyValue中从List返回的字符串值,那实际上没有用。如果ListItemValue发生了变化,我们并没有真正解决任何问题。所以我可以在KeyValue中使用ListItemId。

但是我必须弄清楚如何通过除了它的文字名称之外的任何内容调用Key来从ListItems表中获取ListItemValue。此外,并非所有Keys都与列表相关。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

“识别您的实体并构建表格以支持它们。”

“这个项目不可能。”

如果确实如此,那么不要尝试使用关系数据库技术。关系模型被设想为通用数据管理模型,其中假设数据/信息要求非常稳定。

如果您的用户更改要求的速度比他更改内容更快,那么关系技术就不适合尝试满足他的要求。

答案 1 :(得分:0)

这是另一个重新发明的超级通用名称 - 价值对吗?我真的不了解戒指/单位/钥匙的事情,但它让我想起过去我曾经看过的尝试制作超灵活的名字 - 价值对,最终会变得不可思议并且表现不佳。

识别您的实体&构建表来支持它们。