Database design 具有动态列和动态行的关系数据库系统
ppl, 我必须开发一个这样的数据库Database design 具有动态列和动态行的关系数据库系统,database-design,matrix,relational-database,Database Design,Matrix,Relational Database,ppl, 我必须开发一个这样的数据库 CREATE TABLE tbl_Words ( [WordID] BIGINT NOT NULL IDENTITY(1,1), // This s Primary Key [Word] VARCHAR(250) NOT NULL, // This s Unique.. ) CREATE TABLE tbl_WordRelevancy (
CREATE TABLE tbl_Words
(
[WordID] BIGINT NOT NULL IDENTITY(1,1), // This s Primary Key
[Word] VARCHAR(250) NOT NULL, // This s Unique..
)
CREATE TABLE tbl_WordRelevancy
(
[RelID] BIGINT NOT NULL IDENTITY(1,1), // Primary Key
[Word1] VARCHAR(250) NOT NULL,
[Word2] VARCHAR(250) NOT NULL,
[Relevancy] DECIMAL NOT NULL,
)
这里,我有一个单词列表。我需要保持数据库中每个单词的相关性。当添加新词时,我需要能够添加行和列
我的一个想法是这样的
CREATE TABLE tbl_Words
(
[WordID] BIGINT NOT NULL IDENTITY(1,1), // This s Primary Key
[Word] VARCHAR(250) NOT NULL, // This s Unique..
)
CREATE TABLE tbl_WordRelevancy
(
[RelID] BIGINT NOT NULL IDENTITY(1,1), // Primary Key
[Word1] VARCHAR(250) NOT NULL,
[Word2] VARCHAR(250) NOT NULL,
[Relevancy] DECIMAL NOT NULL,
)
但在这种结构下,如果有100000个单词,在tbl_单词关联表中会有100000*100000个单词。我认为这不好。(该数据库一天最多可增长100万字)
是否可以使用关系数据库结构来维护这个东西?或者,还有什么其他方法可以维持这种结构 你真正想要的是词与词之间的多对多关系
CREATE TABLE words (
word VARCHAR(250) PRIMARY KEY
);
CREATE TABLE word_relevancies (
leftword VARCHAR(250) REFERENCES words,
rightword VARCHAR(250) REFERENCES words,
relevance DECIMAL NOT NULL,
PRIMARY KEY (leftword, rightword)
);
在最初的公式中,您将关系误认为是表。这是学习如何在集合中思考的常见步骤
我强烈建议你读一本关于关系数据库设计的书,比如Joe Celko的SQL for Smarties或Thinking in Set,并熟悉正确的数据库设计。你会省去很多痛苦。你很接近了
CREATE TABLE tbl_Words
(
[WordID] BIGINT NOT NULL IDENTITY(1,1), // This s Primary Key
[Word] VARCHAR(250) NOT NULL, // This s Unique..
)
注释不会使WordID成为主键或单词唯一
CREATE TABLE tbl_Words
(
[WordID] BIGINT IDENTITY(1,1) PRIMARY KEY,
[Word] VARCHAR(250) NOT NULL UNIQUE
);
但我认为你真的在寻找更多类似的东西
create table words (
word varchar(250) primary key
);
create table word_relevance (
word_a varchar(250) not null references words (word),
word_b varchar(250) not null references words (word),
primary key (word_a, word_b),
constraint ordered_words check (word_a <= word_b),
relevance integer not null check (relevance between 0 and 100)
);
创建表格单词(
word varchar(250)主键
);
创建表格词(
word_a varchar(250)非空引用word,
word_b varchar(250)非空引用字(word),
主键(单词a,单词b),
约束有序的单词检查(单词a不是你的表“单词相关性”与OP的“tbl\U单词相关性”本质上相同吗?我承认他有一个错误的M:N关系实现(除其他外),但在我看来,他似乎正在与那张桌子建立M:N关系。你每天从哪里得到一百万个独特的单词?什么语言?