normalized schema
This commit is contained in:
@ -1,17 +1,33 @@
|
||||
CREATE TABLE users (
|
||||
CREATE TABLE users_t (
|
||||
id INTEGER AUTO_INCREMENT,
|
||||
username VARCHAR(25) NOT NULL,
|
||||
pw VARCHAR(512) NOT NULL,
|
||||
super INT(1) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
CREATE UNIQUE INDEX users_username ON users (username);
|
||||
CREATE UNIQUE INDEX users_username ON users_t (username);
|
||||
|
||||
CREATE TABLE acls (
|
||||
CREATE OR REPLACE VIEW users AS
|
||||
SELECT username, pw, super
|
||||
FROM users_t;
|
||||
|
||||
CREATE TABLE acls_t (
|
||||
id INTEGER AUTO_INCREMENT,
|
||||
username VARCHAR(25) NOT NULL,
|
||||
user INTEGER NOT NULL,
|
||||
topic VARCHAR(256) NOT NULL,
|
||||
rw INTEGER(1) NOT NULL DEFAULT 1, -- 1 is read, 2 is write, 3 is readwrite, 4 is subscribe
|
||||
PRIMARY KEY (id)
|
||||
PRIMARY KEY (id),
|
||||
CONSTRAINT `fk_book_author`
|
||||
FOREIGN KEY (user) REFERENCES users_t (id)
|
||||
ON DELETE CASCADE
|
||||
ON UPDATE CASCADE
|
||||
);
|
||||
CREATE UNIQUE INDEX acls_user_topic ON acls (username, topic(228));
|
||||
CREATE UNIQUE INDEX acls_user_topic ON acls_t (user, topic);
|
||||
|
||||
CREATE OR REPLACE VIEW acls AS
|
||||
SELECT a.topic, a.rw,
|
||||
u.username
|
||||
FROM users_t u, acls_t a
|
||||
WHERE a.user = u.id;
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user