我有以下表格:數據庫的設計是否高效?
CREATE TABLE `app_ws_common` (
`serviceid` varchar(16) NOT NULL,
`applicationid` varchar(16) default NULL,
`modifieddate` date default NULL,
`version` decimal(1,0) default NULL,
`servicename` varchar(20) default NULL,
`userid` varchar(128) NOT NULL,
PRIMARY KEY (`serviceid`,`userid`),
KEY `table1_isv_fk` (`applicationid`,`userid`),
CONSTRAINT `table1_isv_fk` FOREIGN KEY (`applicationid`, `userid`) REFERENCES `applications` (`applicationid`, `userid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
CREATE TABLE `app_ws_user` (
`serviceid` varchar(16) NOT NULL,
`userid` varchar(128) NOT NULL,
`applicationid` varchar(16) default NULL,
`modifieddate` date default NULL,
`version` decimal(1,0) default NULL,
`servicename` varchar(20) default NULL,
PRIMARY KEY (`serviceid`,`userid`),
KEY `FK_app_ws_user` (`applicationid`,`userid`),
CONSTRAINT `FK_app_ws_user` FOREIGN KEY (`applicationid`, `userid`) REFERENCES `applications` (`applicationid`, `userid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
CREATE TABLE `applications` (
`applicationid` varchar(16) NOT NULL,
`userid` varchar(128) NOT NULL,
`applicationname` varchar(30) default NULL,
PRIMARY KEY (`applicationid`,`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
CREATE TABLE `external_ws_common` (
`serviceid` varchar(16) NOT NULL,
`modifieddate` date default NULL,
`version` decimal(1,0) default NULL,
`servicename` varchar(20) default NULL,
PRIMARY KEY (`serviceid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
CREATE TABLE `external_ws_user` (
`serviceid` varchar(16) NOT NULL,
`userid` varchar(128) NOT NULL,
`applicationid` varchar(16) default NULL,
`modifieddate` date default NULL,
`version` decimal(1,0) default NULL,
`servicename` varchar(20) default NULL,
PRIMARY KEY (`serviceid`,`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
這裏:
app_ws_common表包含所有應用程序相關的服務,這是所有用戶共用
app_ws_user表包含了所有相關的應用程序服務由特定用戶創建並從其通用版本進行編輯。
應用程序表將包含應用程序列表和相應的用戶。
external_ws_common表將包含獨立於所有應用程序且對所有用戶通用的服務列表。
external_ws_user表格將包含與任何應用程序不對應的服務列表,並且由用戶從「公共」版本的外部服務創建或編輯。
現在,我們必須從表app_ws_user和表app_ws_common中的所有服務檢索與app_ws_user表中特定用戶的編輯版本不同的應用程序相關服務。
如何有效地編寫查詢?
或者我應該重新設計這張桌子嗎?
不是真的關係到你的問題,但我會建議你不要使用'再latin1'。你可能會遇到問題。改用'UTF8'。 – konsolenfreddy 2012-01-13 06:32:14
是的。感謝您的提示konsolenfreddy。 :)那麼,我會面對什麼樣的問題?就像我讀過的,utf-8支持多種語言。所以,如果我的字符集是latin1,並且如果我想存儲日文數據,則會出現問題。我對嗎? – Sowmiya 2012-01-13 06:47:24
是的,確切地說。但是,如果你想在UTF8編碼的網站上顯示數據並且有任何非ascii字符。 – konsolenfreddy 2012-01-13 06:56:02