nog.infio.mirror/src/Database Design/mysql script

180 lines
6.0 KiB
Plaintext

CREATE TABLE News (
NID INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (NID),
Content VARCHAR(255) NOT NULL,
Teaser VARCHAR(255) NOT NULL,
StartDate DATE NOT NULL,
EndDate DATE,
INDEX (Content,EndDate)
);
CREATE TABLE Events (
EID INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (EID),
ETitle VARCHAR(255) NOT NULL,
EDate VARCHAR(255) NOT NULL,
EUrl VARCHAR(255),
INDEX (ETitle,EUrl,EDate)
);
'''Changed Date to VARCHAR due to irregularities in time span'''
CREATE TABLE Organisation (
OID INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (OID),
OName VARCHAR(255) NOT NULL,
ODescription VARCHAR(255),
OUrl VARCHAR(255),
OContact INT,
INDEX (OName,ODescription,OUrl,OContact)
);
CREATE TABLE Location (
LID INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (LID),
LTitle VARCHAR(64),
LStreetNr VARCHAR(128),
LPostalCode1 VARCHAR(16),
LPostalCode2 VARCHAR(16),
LCity1 VARCHAR(32),
LCity2 VARCHAR(32),
POBox VARCHAR(16),
LCountry VARCHAR(64),
LLon VARCHAR(8),
LLat VARCHAR(8),
INDEX (LTitle,LStreetNr,LPostalCode1,LPostalCode2,LCity1,LCity2,LCountry)
);
CREATE TABLE Tag (
TID INT NOT NULL AUTO_INCREMENT,
TagName VARCHAR(64) NOT NULL,
TagDescription VARCHAR(255),
PRIMARY KEY (TID)
);
CREATE TABLE KnowHowBackground (
KNID INT NOT NULL AUTO_INCREMENT,
KNTitle VARCHAR(64) NOT NULL,
KNContent VARCHAR(255),
KNAbstract VARCHAR(255) NOT NULL,
KNUrl VARCHAR(255),
PRIMARY KEY (KNID)
);
CREATE TABLE EventsKategorie (
EKID INT NOT NULL AUTO_INCREMENT,
EKName VARCHAR(64) NOT NULL,
EKDescription VARCHAR(255),
PRIMARY KEY (EKID)
);
CREATE TABLE NewsKategorie (
NKID INT NOT NULL AUTO_INCREMENT,
NKName VARCHAR(64) NOT NULL,
NKDescription VARCHAR(255),
PRIMARY KEY (NKID)
);
CREATE TABLE ChannelKategorie (
CKID INT NOT NULL AUTO_INCREMENT,
CKName VARCHAR(64) NOT NULL,
CKDescription VARCHAR(255),
PRIMARY KEY (CKID)
);
CREATE TABLE News_NewsKategorie (
NNKID INT NOT NULL AUTO_INCREMENT,
FK_NID INT NOT NULL,
FK_NKID INT NOT NULL,
PRIMARY KEY (NNKID),
CONSTRAINT FK_NID1 FOREIGN KEY (FK_NID) REFERENCES News(NID) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT FK_NKID1 FOREIGN KEY (FK_NKID) REFERENCES NewsKategorie(NKID) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE News_ChannelKategorie (
NCKID INT NOT NULL AUTO_INCREMENT,
FK_NID INT NOT NULL,
FK_CKID INT NOT NULL,
PRIMARY KEY (NCKID),
FOREIGN KEY (FK_NID) REFERENCES News(NID) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (FK_CKID) REFERENCES ChannelKategorie(CKID) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE News_Tag (
TNID INT NOT NULL AUTO_INCREMENT,
FK_NID INT NOT NULL,
FK_TID INT NOT NULL,
PRIMARY KEY (TNID),
FOREIGN KEY (FK_NID) REFERENCES News(NID) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (FK_TID) REFERENCES Tag(TID) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE News_Events (
NEID INT NOT NULL AUTO_INCREMENT,
FK_NID INT NOT NULL,
FK_EID INT NOT NULL,
PRIMARY KEY (NEID),
FOREIGN KEY (FK_NID) REFERENCES News(NID) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (FK_EID) REFERENCES Events(EID) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE News_Organisation (
NOID INT NOT NULL AUTO_INCREMENT,
FK_NID INT NOT NULL,
FK_OID INT NOT NULL,
PRIMARY KEY (NOID),
FOREIGN KEY (FK_NID) REFERENCES News(NID) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (FK_OID) REFERENCES Organisation(OID) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE Organisation_NewsKategorie (
ONKID INT NOT NULL AUTO_INCREMENT,
FK_NKID INT NOT NULL,
FK_OID INT NOT NULL,
PRIMARY KEY (ONKID),
FOREIGN KEY (FK_NKID) REFERENCES NewsKategorie(NKID) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (FK_OID) REFERENCES Organisation(OID) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE Organisation_Location (
OLID INT NOT NULL AUTO_INCREMENT,
FK_LID INT NOT NULL,
FK_OID INT NOT NULL,
PRIMARY KEY (OLID),
FOREIGN KEY (FK_LID) REFERENCES Location(LID) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (FK_OID) REFERENCES Organisation(OID) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE Organisation_KnowHowBackground (
OKNID INT NOT NULL AUTO_INCREMENT,
FK_KNID INT NOT NULL,
FK_OID INT NOT NULL,
PRIMARY KEY (OKNID),
FOREIGN KEY (FK_KNID) REFERENCES KnowHowBackground(KNID) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (FK_OID) REFERENCES Organisation(OID) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE Organisation_Tag (
OTID INT NOT NULL AUTO_INCREMENT,
FK_TID INT NOT NULL,
FK_OID INT NOT NULL,
PRIMARY KEY (OTID),
FOREIGN KEY (FK_TID) REFERENCES Tag(TID) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (FK_OID) REFERENCES Organisation(OID) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE Organisation_Events (
OEID INT NOT NULL AUTO_INCREMENT,
FK_EID INT NOT NULL,
FK_OID INT NOT NULL,
PRIMARY KEY (OEID),
FOREIGN KEY (FK_EID) REFERENCES Events(EID) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (FK_OID) REFERENCES Organisation(OID) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE Events_Tag (
ETID INT NOT NULL AUTO_INCREMENT,
FK_TID INT NOT NULL,
FK_EID INT NOT NULL,
PRIMARY KEY (ETID),
FOREIGN KEY (FK_TID) REFERENCES Tag(TID) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (FK_EID) REFERENCES Events(EID) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE Events_Location (
ELID INT NOT NULL AUTO_INCREMENT,
FK_EID INT NOT NULL,
FK_LID INT NOT NULL,
PRIMARY KEY (ELID),
FOREIGN KEY (FK_EID) REFERENCES Events(EID) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (FK_LID) REFERENCES Location(LID) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE Events_EventsKategorie (
EEKID INT NOT NULL AUTO_INCREMENT,
FK_EID INT NOT NULL,
FK_EKID INT NOT NULL,
PRIMARY KEY (EEKID),
FOREIGN KEY (FK_EID) REFERENCES Events(EID) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (FK_EKID) REFERENCES EventsKategorie(EKID) ON DELETE CASCADE ON UPDATE CASCADE
);