我正在为MySQL和PHP设计一个基本CMS的数据库。 CMS将有一个前端,允许排序和搜索。后端将允许授权用户上传文件。
我正在使用PHPMyAdmin,我想帮助设置我的数据库。
我愿意回答各种MySQL数据类型以及它们的优点。请使用常见的数据库字段作为示例。
下面列出了我想要的内容。缺少什么以及我需要使用哪些数据类型?
资源(对于我的文件)
- 的file_id
- filename(文件预先排序,显示名称和路径 从这里。)
- file_type(PDF | AUDIO | VIDEO | PHOTO [也用于生成文件 网址])
- 上传日期(PHP或MySQL中的时间戳)
- uploaded_by(来自用户表的用户ID)
- event(来自Events表的event_id,可选)
用户(用户帐户 - 管理员权限和通知列表)
- USER_ID
- 如first_name
- 姓氏
- 电子邮件
- 密码
- phone_number(可选)
- permissions_level(只读,上传)
- CREATION_DATE
活动
- event_id的
- EVENT_NAME
- event_location
- EVENT_DATE
- EVENT_DESCRIPTION
- ENTRY_DATE
答案 0 :(得分:2)
我会采取什么:
资源(对于我的文件)
用户(用户帐户 - 管理员权限和通知列表)
<强>事件强>
当你设置了数据库并输入了一些虚拟数据时,你可以通过phpmyadmin运行一个简单的语句来告诉你,MySQL将采用什么样的虚拟数据:
SELECT * FROM events PROCEDURE ANALYSE()
在Optimal_fieldtype
列中,您将找到MySQL告诉您的内容。但是你不应该采用那种确切的字段类型。它会经常告诉你一个ENUM,但是大多数时候你会添加随机数据,所以你必须在这种情况下使用VARCHAR,Max_length
列会给你一个提示它应该有多长时间的提示。但是在所有VARCHAR字段上,您应该添加额外的空间,具体取决于您期望值的长度。考虑到即使名字也可能超过50个字符。
答案 1 :(得分:1)
您的用户表没有密码哈希列。不确定你是否打算让它有这样或那样。我无法看到我们如何回答应该使用哪种数据类型,因为它完全取决于您计划如何使用列。对于日期,我更喜欢日期时间而不是时间戳,但这仅仅是个人偏好,因为我喜欢在查询中手动插入日期。
答案 2 :(得分:0)
缺少什么,这有点让你决定/需要什么。您应该阅读设计数据库。
至于你拥有的数据类型
ID字段应为INT
或BIGINT
(取决于您的应用程序的大小)并设置为PRIMARY KEY
。
名称应为varchar
您需要多长时间取决于您的要求。大多数第一/列表名称一般最多为25-30个字符。根据您的要求,活动名称可能会超过250个。
根据您的要求,该位置与VARCHAR
的名称类似,大约在50-150之间。
日期应为DATETIME
字段。
说明应为VARCHAR(250)
或TEXT
字段。
权限实际上取决于您希望如何处理它。这可以是INT
或VARCHAR
(如果您要序列化数组)。
电话号码可以是INT
(如果您想要删除所有非数字字符并按照自己的方式格式化)或VARCHAR(15)
如果您不想删除字符
电子邮件应为VARCHAR(250)
。
希望这会有所帮助,这又取决于您对应用程序的要求以及您所设想的内容。但是随着需求的变化,始终可以更改初始类型。
修改强>
如果您想了解有关不同MySQL数据类型的完整信息,请阅读手册:http://dev.mysql.com/doc/refman/5.0/en/data-types.html