Database
Database schema
Notes
- Files tags are modeled as fix tags
- if only simple text tags are needed the structure can be simplified
- User Entities depends on external IDs
SQL Code
This codes was generated from the Database Scheme
CREATE TABLE UserEntities
(
ID INT NOT NULL,
External_ID INT NOT NULL,
Type VARCHAR NOT NULL,
PRIMARY KEY (ID)
);
CREATE TABLE Files
(
FileID INT NOT NULL,
Createtime DATE NOT NULL,
Updatetime DATE NOT NULL,
Owner INT NOT NULL,
PRIMARY KEY (FileID),
FOREIGN KEY (Owner) REFERENCES UserEntities(Owner),
UNIQUE (FileID)
);
CREATE TABLE Datafiles
(
Storagelocation VARCHAR(;Bitecode) NOT NULL,
FileID INT NOT NULL,
PRIMARY KEY (FileID),
FOREIGN KEY (FileID) REFERENCES Files(FileID)
);
CREATE TABLE Directories
(
FileID INT NOT NULL,
PRIMARY KEY (FileID),
FOREIGN KEY (FileID) REFERENCES Files(FileID)
);
CREATE TABLE DirectoryContent
(
Directory INT NOT NULL,
File INT NOT NULL,
PRIMARY KEY (Directory, File),
FOREIGN KEY (Directory) REFERENCES Directories(Directory),
FOREIGN KEY (File) REFERENCES Files(File)
);
CREATE TABLE Tags
(
ID INT NOT NULL,
Name VARCHAR NOT NULL,
PRIMARY KEY (ID)
);
CREATE TABLE FileTags
(
FileID INT NOT NULL,
TagID INT NOT NULL,
PRIMARY KEY (FileID, TagID),
FOREIGN KEY (FileID) REFERENCES Files(FileID),
FOREIGN KEY (TagID) REFERENCES Tags(TagID)
);
CREATE TABLE AccesRights
(
Right CHAR NOT NULL,
FileID INT NOT NULL,
EntityID INT NOT NULL,
PRIMARY KEY (FileID, EntityID),
FOREIGN KEY (FileID) REFERENCES Files(FileID),
FOREIGN KEY (EntityID) REFERENCES UserEntities(EntityID)
);
CREATE TABLE AdditionalMetadata
(
Parameter VARCHAR(1) NOT NULL,
Content VARCHAR NOT NULL,
FileID INT NOT NULL,
PRIMARY KEY (FileID),
FOREIGN KEY (FileID) REFERENCES Files(FileID)
);
ER Diagramm
This beautiful diagram gives some more information about the structure