我有以下表格:数据库的设计是否高效?
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