您可以对以下设计发表评论。 我是否正在用这种设计来破坏自己?我一直在反复设计系统,因为全新的要求不能在设计中被破解,所以现在我正在寻找具有最灵活系统的长期解决方案。universal db schema
有了这个设计,我可以动态地创建下面的复杂性和设计,现在我意识到实现不会很直接,所以在我花上几天的时间之前,我想获得一些真正的输入。
这是常见的否定或是共同的吗? 任何输入将不胜感激。
instance
firstname bob
lastname gates
scoreone 20
scoretwo 90
scorethree
scorethreePart1 30
scoreThreePart2 32
CREATE DATABASE uni;
use uni;
CREATE TABLE instance (
ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
ParentID INT DEFAULT NULL,
FOREIGN KEY (ParentID) REFERENCES instance(ID) ON DELETE CASCADE
) ENGINE=InnoDB;
CREATE TABLE keyval_connector (
ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
ParentID INT NOT NULL,
TextKey VARCHAR(255) NOT NULL,
Note TEXT DEFAULT NULL,
UNIQUE(ParentID, TextKey),
FOREIGN KEY (ParentID) REFERENCES instance(ID) ON DELETE CASCADE
) ENGINE=InnoDB;
CREATE TABLE keyval_int (
ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
ParentID INT NOT NULL,
Value INT DEFAULT NULL,
UNIQUE(Value),
FOREIGN KEY (ParentID) REFERENCES keyval_connector(ID) ON DELETE CASCADE
) ENGINE=InnoDB;
CREATE TABLE keyval_varchar (
ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
ParentID INT NOT NULL,
Value VARCHAR(255) DEFAULT NULL,
UNIQUE(Value),
FOREIGN KEY (ParentID) REFERENCES keyval_connector(ID) ON DELETE CASCADE
) ENGINE=InnoDB;
CREATE TABLE keyval_double (
ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
ParentID INT NOT NULL,
Value DOUBLE DEFAULT NULL,
UNIQUE(Value),
FOREIGN KEY (ParentID) REFERENCES keyval_connector(ID) ON DELETE CASCADE
) ENGINE=InnoDB;
CREATE TABLE keyval_datettime (
ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
ParentID INT NOT NULL,
Value DATETIME DEFAULT NULL,
UNIQUE(Value),
FOREIGN KEY (ParentID) REFERENCES keyval_connector(ID) ON DELETE CASCADE
) ENGINE=InnoDB;
除了以上提到的问题,已经低于升起,你是在执行数据库内的一致性时为自己设定一个痛苦的世界。不要做! – 2011-03-25 15:37:17
感谢大家的意见!这正是我所期待的,我认为你已经说服我不要走这条路,因为实施不会那么直截了当,除了看起来有人为这个概念申请专利而不是进入这个领域! – user391986 2011-03-25 17:43:04