我正在为基本 CMS 使用 MySQL 和 PHP 设计数据库。 CMS 将有一个允许排序和搜索的前端。后端将允许授权用户上传文件。
我正在使用 PHPMyAdmin,我想帮助设置我的数据库。
我乐于接受解释各种 MySQL 数据类型及其用途的答案。请使用常见的数据库字段作为示例。
下面是我想要的列表。缺少什么以及我需要使用什么数据类型?
Resources (For my files)
- file_id
- filename (Files are presorted and display names and paths are derived from here.)
- file_type (PDF | AUDIO | VIDEO | PHOTO [Also used to generate file urls])
- upload date (timestamp in PHP or MySQL)
- uploaded_by (User ID from Users table)
- event (event_id from Events table, optional)
Users (User accounts - for admin access and maybe a notification list)
- user_id
- first_name
- last_name
- password
- phone_number (optional)
- permissions_level (read only, upload)
- creation_date
Events
- event_id
- event_name
- event_location
- event_date
- event_description
- entry_date
最佳答案
我会采取什么:
资源(对于我的文件)
- file_id INT(或 SMALLINT,具体取决于预期条目的数量)
- 文件名 VARCHAR(如果长度超过 255 个字符,则为文本)
- file_type ENUM(如果只有您提到的那些,或者如果可以添加动态类型则为 VARCHAR)
- 上传 DATE DATETIME(如果不需要时间,则上传 DATE)
- uploaded_by INT(或 SMALLINT 但与用户表中的相同)
- 事件 INT(或 SMALLINT 但与事件表中的相同)
用户(用户帐户 - 用于管理员访问和通知列表)
- user_id INT(或 SMALLINT,具体取决于预期条目的数量)
- 名字 VARCHAR
- 姓氏 VARCHAR
- 电子邮件 VARCHAR
- 密码 CHAR(40)(用于 SHA1 哈希)
- phone_number VARCHAR(因为它可能包含类似 -、/或 + 的内容)
- permissions_level TINYINT(如果只有数字值且最多 127 个值)
- creation_DATE DATETIME(如果您不需要时间,则为 DATE)
事件
- event_id INT(或 SMALLINT,具体取决于预期条目的数量)
- 事件名称 VARCHAR
- event_location VARCHAR
- event_DATE DATETIME(如果不需要时间,则为 DATE)
- event_description TEXT(因为 VARCHAR 的 255 可能太短)
- entry_DATE DATETIME(如果不需要时间,则为 DATE)
当您设置了数据库并输入了一些虚拟数据后,您可以通过 phpmyadmin 运行一个简单的语句,它会告诉您 MySQL 将采用哪些确切的虚拟数据:
SELECT * FROM events PROCEDURE ANALYSE()
在 Optimal_fieldtype
列中,您将找到 MySQL 告诉您采用的内容。但是你不应该采用那个确切的字段类型。它会经常告诉您采用 ENUM,但大多数时候您会添加随机数据,因此在这种情况下您必须采用 VARCHAR 列 Max_length
会提示您它应该有多长.但是在所有 VARCHAR 字段上,您应该添加额外的空间,具体取决于您期望值的长度。考虑到即使是名称也可能超过 50 个字符。
关于php - MySQL 数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3622319/