表设计-mysql关于数据表的设计

问题描述

mysql关于数据表的设计
我现在有一个member(用户表)里面存放了一个用户的所有信息。还有一个hobby(爱好表)里面存放所有的爱好。现在我需要给用户存放hobby表里面的爱好。我是应该直接在member表里面加一个hobby字段,然后存放爱好表里面的ID如(123),还是应该再一个表来存放用户跟爱好的关系呢?或者还有没有其它更好的可能,**注意:一个用户可以有多个爱好,而以后我只需要查询某一个爱好的人有那些。**

解决方案

这个还是要根据你的需要来定, 如果说以后都是以用户来查询爱好的话, 当然是放在member表会好些, 如果后面要根据爱好来查询的话, 当然是再建一张用户和爱好的关联表; 我个人倾向建关联表,这样数据结构清晰,后面如果需求变了,不至于要修改数据库。

解决方案二:
为了方便以后查询,肯定是建议新建一个表来存储爱好。这样做的好处是便于查询,也符合一对多表之间关联的设计。

解决方案三:
两种方式都可以,直接在member表中给个hobby字段的好处是不需要再建一个表,查询时只需要查询两张表就可以得到结果,但是存入取出hobby字段时需要进行处理,比如用&分隔,取出时就需要用split(""&"")去分隔获取到所有的Id,然后再去hobby(爱好表)中获取到每一种。另一种就不多说了,就是三张表连查。

解决方案四:
建立两个表的关系即可如果用户表存在ID的话在爱好表中建立一个与ID关联字段就好了.

时间: 2024-02-19 15:54:05

表设计-mysql关于数据表的设计的相关文章

MySQL清空数据表的方法实例与分析_Mysql

MySQL数据库中,如果我们想清空数据表(删除数据表中所有内容)的话,可以通过下面两个语句来实现: truncate table table_n; delete from table_n; 实例 我们先通过实例看下通过这两种方式清空数据库的过程和结果 #delete演示 mysql> create table testforde( -> number int not null auto_increment, -> name varchar(20) not null, -> prim

php mysql显示数据表字段 SHOW FIELDS

php mysql显示数据表字段 SHOW FIELDS $mydbname=RepPostVar($_GET['mydbname']); $mytbname=RepPostVar($_GET['mytbname']); if(empty($mydbname)||empty($mytbname)) {  printerror("ErrorUrl","history.go(-1)"); } $form=$_GET['form']; if(empty($form)) {

设计Excel 2007数据表格式

Excel2007不仅是一个功能强大的计算工具,同时也是一个出色的数据管理分析工具.其具有的数据表 分析法与专业的数据库软件相比,Excel2007在操作上更简便快捷,适合于对中小数据的管理操作. 通常情况下,数据表包括表标题.表头.表尾和表体固定栏目等内容.实现数据表分析法的首要任务 是设计这个数据表格式,以满足数据分析处理的操作. 例 下面以"新起点第一季度图书销售情况表"为例,具体介绍数据表格式的设计工作. 具体操作步骤如下: 1.新建一个工作薄,并将其命名为"审计应用

[C#][MySql]统计数据表总行数函数--C#和MySQL开发

Web.config设置 <?xml version="1.0"?> <configuration>   <connectionStrings>     <add name="MyConnectionString" connectionString="server=localhost;user id=root;password=123456;database=demo; pooling=true;"/&g

mysql 超大数据/表管理技巧_Mysql

如果你对长篇大论没有兴趣,也可以直接看看结果,或许你对结果感兴趣.在实际应用中经过存储.优化可以做到在超过9千万数据中的查询响应速度控制在1到20毫秒.看上去是个不错的成绩,不过优化这条路没有终点,当我们的系统有超过几百人.上千人同时使用时,仍然会显的力不从心. 目录:     分区存储    优化查询    改进分区    模糊搜索    持续改进的方案 正文:     分区存储    对于超大的数据来说,分区存储是一个不错的选择,或者说这是一个必选项.对于本例来说,数据记录来源不同,首先可以

mysql创建数据表与删除数据表

创建数据表利用 命令:create table <表名> ( <字段名1> <类型1> [,..<字段名n> <类型n>]); 语法:CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)]  [table_options] [select_statement]  例  代码如下 复制代码 mysql> create table MyClass(

查看MYSQL中数据表占用的空间

由于数据太大了.所以MYSQL需要瘦身,那前提就是需要知道每个表占用的空间大小. 首先打开指定的数据库: use information_schema;   如果想看指定数据库中的数据表,可以用如下语句: select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from TABLES where table_schema='AAAA' and table_name='BBBB';   如果想看数据库中每个数据表的,可以用如下

MySQL中大数据表增加字段的实现思路

前言 增加字段相信大家应该都不陌生,随手就可以写出来,给 MySQL 一张表加字段执行如下 sql 就可以了: ALTER TABLE tbl_tpl ADD title(255) DEFAULT '' COMMENT '标题' AFTER id; 但是线上的一张表如果数据量很大呢,执行加字段操作就会锁表,这个过程可能需要很长时间甚至导致服务崩溃,那么这样操作就很有风险了. 那么,给 MySQL 大表加字段的思路如下: ① 创建一个临时的新表,首先复制旧表的结构(包含索引) create tab

mysql中数据表复制语句(表结构、表数据)

1.复制表结构及数据到新表 CREATE TABLE 新表 SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable;来删除. 不过这种方法的一个最不好的地方就是新表中没有了旧表的primary key.Extra(auto_increment)等属性.需要自己用"alter"添加,而且容易搞错. 2.只复制表结构到新表 CREATE TABLE 新表 SELECT * FROM 旧表WHERE 1=2