【发布时间】:2018-09-13 11:10:18
【问题描述】:
我有这样的表:
CREATE TABLE `psAdmin` (
`id_admin` INT(10) UNSIGNED NOT NULL,
`enable` CHAR(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
`company_id` INT(11) NOT NULL,
`username` VARCHAR(50) COLLATE utf8_unicode_ci NOT NULL,
`password` VARCHAR(128) COLLATE utf8_unicode_ci NOT NULL,
`salt` VARCHAR(128) COLLATE utf8_unicode_ci NOT NULL,
`last_logged_in_date` datetime NOT NULL,
`valid_account_in_time` CHAR(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
`expiration_date` DATE NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE `psAdminDetails` (
`id_admin_details` INT(10) UNSIGNED NOT NULL,
`id_admin` INT(10) UNSIGNED NOT NULL,
`name` VARCHAR(60) COLLATE utf8_unicode_ci DEFAULT NULL,
`company_name` VARCHAR(120) COLLATE utf8_unicode_ci DEFAULT NULL,
`nip` VARCHAR(20) COLLATE utf8_unicode_ci DEFAULT NULL,
`street` VARCHAR(70) COLLATE utf8_unicode_ci DEFAULT NULL,
`city` VARCHAR(50) COLLATE utf8_unicode_ci DEFAULT NULL,
`post_code` VARCHAR(12) COLLATE utf8_unicode_ci DEFAULT NULL,
`country_id` INT(11) NOT NULL DEFAULT '0',
`provincial_id` INT(11) NOT NULL DEFAULT '0',
`avatar` VARCHAR(65) COLLATE utf8_unicode_ci DEFAULT NULL,
`level` CHAR(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
`notes` text COLLATE utf8_unicode_ci
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE `psAdminLoginAttempts` (
`id_admin_login_attempts` INT(10) UNSIGNED NOT NULL,
`id_admin` INT(10) UNSIGNED NOT NULL,
`time` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE `psAdminLoginHistory` (
`id_admin_history` INT(10) UNSIGNED NOT NULL,
`id_admin` INT(10) UNSIGNED NOT NULL,
`time` datetime NOT NULL,
`ip` VARCHAR(25) COLLATE utf8_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE `psCompany` (
`id_company` INT(10) UNSIGNED NOT NULL,
`enable` CHAR(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
`name` VARCHAR(85) COLLATE utf8_unicode_ci DEFAULT NULL,
`nip` VARCHAR(20) COLLATE utf8_unicode_ci DEFAULT NULL,
`notes` text COLLATE utf8_unicode_ci,
`street` VARCHAR(70) COLLATE utf8_unicode_ci DEFAULT NULL,
`city` VARCHAR(50) COLLATE utf8_unicode_ci DEFAULT NULL,
`post_code` VARCHAR(12) COLLATE utf8_unicode_ci DEFAULT NULL,
`country_id` INT(11) NOT NULL DEFAULT '0',
`provincial_id` INT(11) NOT NULL DEFAULT '0',
`contact_person` VARCHAR(50) COLLATE utf8_unicode_ci DEFAULT NULL,
`email` VARCHAR(50) COLLATE utf8_unicode_ci DEFAULT NULL,
`www` VARCHAR(50) COLLATE utf8_unicode_ci DEFAULT NULL,
`phone_number` VARCHAR(25) COLLATE utf8_unicode_ci DEFAULT NULL,
`date_of_registration` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE `psProvincial` (
`provincial_id` INT(10) UNSIGNED NOT NULL,
`name` VARCHAR(35) COLLATE utf8_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE `psAdmin`
ADD PRIMARY KEY (`id_admin`);
ALTER TABLE `psAdminDetails`
ADD PRIMARY KEY (`id_admin_details`);
ALTER TABLE `psAdminLoginAttempts`
ADD PRIMARY KEY (`id_admin_login_attempts`);
ALTER TABLE `psAdminLoginHistory`
ADD PRIMARY KEY (`id_admin_history`);
ALTER TABLE `psCompany`
ADD PRIMARY KEY (`id_company`);
ALTER TABLE `psProvincial`
ADD PRIMARY KEY (`provincial_id`);
ALTER TABLE `psAdmin`
MODIFY `id_admin` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT;
ALTER TABLE `psAdminDetails`
MODIFY `id_admin_details` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT;
ALTER TABLE `psAdminLoginAttempts`
MODIFY `id_admin_login_attempts` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT;
ALTER TABLE `psAdminLoginHistory`
MODIFY `id_admin_history` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT;
ALTER TABLE `psCompany`
MODIFY `id_company` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT;
ALTER TABLE `psProvincial`
MODIFY `provincial_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT;
COMMIT;
表格有以下功能:
psAdmin - 管理员登录表 psAdminDetails - 详细管理员的数据表 psAdminLoginAttempts - 具有管理员登录尝试的表 psAdminLoginHistory - 包含管理员登录历史记录的表 psCompany - 公司数据库。公司可以无限多。您可以为每个公司分配管理员 psProvincial - 省
合并是有意义的:
psAdminLoginAttempts.id_admin = psAdmin.id_admin
psAdminLoginHistory.id_admin = psAdmin.id_admin
psAdmin.company_id = psCompany.id_company
psAdminDetails.id_admin = psAdmin.id_admin
psAdminDetails.provincial_id = psAdmin.id_admin
psAdminLoginAttempts.id_admin = psAdmin.id_admin
psAdminLoginHistory.id_admin = psAdmin.id_admin
您会添加更多键(例如外键)吗?如果有,在哪里?
【问题讨论】:
-
数据库的目的是什么?你有主要的 SELECT 查询来演示吗?我会在所有主要的选择命令上运行 EXPLAIN SELECT,然后添加索引
-
目前我只是在设计一个基地。该数据库用于存储分配给各个公司的管理员。
标签: mysql