困惑于创建SQL关系

时间:2014-10-03 10:38:14

标签: sql postgresql many-to-many

我想在语法上创建一个db。请看一下我认为需要的一些要点:

  1. 每个单词都有自己的词性,以及它的一些相关词(如过去时,同义词等)。
  2. 每个词性最终都是一个词(如名词,形容词)。
  3. 单词中的每个相关单词也都是单词。
  4. 如何使用此关系创建SQL表?我是否必须与自己建立多种关系?请帮我解决这个问题。我将非常感激。谢谢。

    更新

    或创建不同的表格,然后将它们链接在一起,如图所示。

    enter image description here

    更新

    我想要的是这样:

    enter image description here

2 个答案:

答案 0 :(得分:0)

我建议你把它拆分成不同的表格。 所以你有一个用于你的话语,演讲,相关单词等。 还建议使用单词table作为主表,并在其他表中添加单词表的ID以将其链接到彼此。这样你的多对多问题就应该解决了 如果我理解你的问题,这应该有用,如果没有,请告诉我。

答案 1 :(得分:0)

不,我认为你的设计并不是很好。理想情况下,你应该加入一个整数而不是文本字段,你的命名是不一致的,所以不明显哪些字段连接在一起,我不认为所有这些表是必要的,因为似乎有很多重复。

为什么不去寻求简单的事情,例如:如果你想存储单词之间的关系,你只需要两个或三个表(这是伪代码,因为我不知道你要针对哪个数据库):

CREATE TABLE [Words] ([WordId] INT, [Word] TEXT);
CREATE TABLE [WordRelationships] ([WordId] INT, [RelatedWordId] INT, [RelationshipId] INT);
CREATE TABLE [Relationships] ([RelationshipId] INT, RelationshipName TEXT);
INSERT INTO Words VALUES (1, 'Mouse');
INSERT INTO Words VALUES (2, 'Cat');
INSERT INTO Relationships VALUES (1, 'Animal');
INSERT INTO WordRelationships VALUES (1, 2, 1);
etc..

然后你可以扩展它,例如

ALTER TABLE [Words] ADD COLUMN [WordTypeId] INT;
CREATE TABLE [WordTypes] ([WordTypeId] INT, [WordTypeName] TEXT);
INSERT INTO WordTypes VALUES (1, 'Noun');
UPDATE Words SET WordTypeId = 1 WHERE Word = 'Mouse';
etc...
相关问题