第一:

  在开始编码前、主要关注数据库里要保存什么样的数据,以级最佳的数据组织方式和内在关联方式。

第二:

  使用你所知的数据库特性尽可能高效的实现数据管理。如正确的索引、数据库类型、高效的select!

---------------------------------------------------------------------------------------------------------------------------------

下面将会讲解、《逗号分隔列表》引起的一些数据库问题、Coders表用户记录程序员和他用的程序设计语言这个表只是为了引出这本主题相关的问题

  create table Coders(--程序员表

  Name varchar(16) primary key --姓名

  Languge varchar(8)--程序语言

  );

  一般来说在工司只一门语言就可以了。比如我用的就是SQL 。也就是说

  insert into Coders(Name,Languge) values('蒋乐哥哥','SQL');这样一行就可以表达了。好了问题来了、小公司一般来说它要的是一个“全才”也就是说我可能还要写C#

  所以刚才的insert 不可这样写、要像下面的这个一样才可以表达好。

  insert into Coders(Name,Languge) values('蒋乐哥哥','SQL、C#');

问题:

  1、可拓展性不好、也就说是如果公司不只是要求你会SQL、C#、HTML、XAML、JS、、、、、等等这样这个列是保存不了这么多的。

  2、对于聚合不方便、比如说统计一下蒋乐哥哥会几种语言?想想要什么写。

  3、数据库完整性不能得到保护、insert into Coders(Name,Languge) values('蒋乐哥哥','湖南话');看到了吧“湖南话”就目前来说是不算编程语言的。当是这句insert 是不会

    报错的。

  4、性能问题、如找会C#程序员 select Name from Coders where Languge like '%C#%;可以看到这个select 是就算是有索引也是用不到的。

解决方案:

  create table Languges(LangugeID int primary key,LangugeName varchar(8));--建立一个编程语言表别的表都要参照这张表。

  create table Contact(

  LangugeID int ,

  Name varchar(8),

  constraint FK_languge foreign key(LangugeID) references Languges(LangugeID),

  constraint FK_Name foreign key(Name) references Corders(Name));

  

SQL 设计心得、逗号分隔列表的更多相关文章

  1. sql中根据逗号分隔,查出多行数据

    --sql中根据逗号分隔,查出多行数据 select       a.DiscussID,b.LocationID  from       (select DiscussID,LocationID=c ...

  2. “秒杀”问题的数据库和SQL设计【转载】

    “秒杀”问题的数据库和SQL设计 APRIL 21ST, 2015 问题的来源 完全不考虑一致性的方案 表结构 方案 存在的问题 保证单用户不会重复购买 解决超卖问题 方案 优化 提高性能了 鱼与熊掌 ...

  3. sql判断以逗号分隔的字符串中是否包含某个字符串--------MYSQL中利用select查询某字段中包含以逗号分隔的字符串的记录方法

    sql判断以逗号分隔的字符串中是否包含某个字符串---------------https://blog.csdn.net/wttykj/article/details/78520933 MYSQL中利 ...

  4. 物联网平台设计心得:DateTimePicker实现选择联动

    所谓的选择联动,就是指,当我DateTimePicker1选择2月4号的时候,我DateTimePicker2只能选择2月4号和2月5号两天,当然你可以自行规定要选择的日期.这在一些图表查询条件里面是 ...

  5. 在sql设计中没法修改表结构

    在做练习的时候经常表没设计好,后来有要去数据库修改表结构但是没词用界面修改的时候都会提示要保存 转自http://www.57xue.com/ItemView/Sql/2016061600160.ht ...

  6. sql 设计反模式

    ---恢复内容开始--- 1.乱穿马路 ---- > 目标 : 存储多值属性. 1) 错误方法: 使用格式化的逗号分割列表. 1-> 不适合查询,定位数据,无法运用聚合函数进行分组,不利于 ...

  7. 我的2016年终总结(PF项目框架设计心得分享 2.0rc)

    在无数的日夜里,熬出了多少的黑眼圈,致勤勤恳恳工作的各位朋友与自己.每到了年末的时候总想写的什么,主要是为了回顾以往一年里到底做了什么,这便是年终总结的主要意义.在此我将要总结的是和我在技术层面上成长 ...

  8. Sql语句报ORA-01795: 列表中的最大表达式数为 1000

    错误信息:java.sql.SQLException: ORA-01795: 列表中的最大表达式数为 1000,错误信息如下: serviceid是:work -------------other W ...

  9. 影响Scala语言设计的因素列表

    Scala语言设计概述 Scala的设计受许多编程语言和研究思想的影响.事实上,仅很少的Scala的特点是全新的:大多数都已经被以另外的形式用在其他语言中了.Scala的革新主要来源于它是如何构造并放 ...

随机推荐

  1. 《OS X Mountain Lion》 读书杂记

    OS X是一个类UNIX操作系统,由底层的Darwin和上层的OS X应用程序框架(Cocoa, Carbon, Quartz等)及Aqua用户界面组成.其中Darwin是一个开源.完整的POSIX- ...

  2. OC语法3——点语法,self关键字

    点语法:   为了给程序员提供便捷,OC中也引入了点语法.不过它和Java中点语法的意义是完全不同的. 在Java中无论调用任何方法,还是访问public类型的成员变量都是用点语法(.号). 而在OC ...

  3. Centos6.7 安装ReviewBoard2.5.7 问题记录

    pip install ReviewBoard 1.修改pip源,默认源网络不畅 pip install -i http://pypi.douban.com/simple simplejson 2.p ...

  4. jQuery1.9.1针对checkbox的调整

    在jquery 1.8.x中的版本,我们对于checkbox的选中与不选中操作如下: 判断是否选中 $('#checkbox').prop('checked') 设置选中与不选中状态: $('#che ...

  5. JavaScript瀑布流代码

    function osCode(){ var boxWidth = parseInt($(".item").css('width')), marginTop = parseInt( ...

  6. 在centos7下安装mysql5.7

    wget http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpmyum localinstall -y mysql57- ...

  7. JQuerry 权威指南的都市笔记

    jquery 如今发展成集javascript.css.DOM .Ajax于一体的强大框架体系.他的主旨是以更少的代码,实现更多的功能(write less,do more) jquery  的进本功 ...

  8. Python核心编程笔记--随机数

    #第一步引入模块 import random #第二步生成随机数 print random.randint(1,3);#[1,2,3]注意这里是闭区间.

  9. Oracle EBS-SQL (BOM-7):检查有BOM无工艺路线的子装配件或成品.sql

    select     msi.segment1,     msi.description,     msi.item_typefrom inv.mtl_system_items_b   msiwher ...

  10. 通过layer-list多图层叠加效果实现圆角功能

    在android的开发过程中,我们可能会做圆角的效果出来,如下图所示: 四个角都是圆角的效果.如果让UI设计人员直接出图,可能会更简单一些.但是我们使用android中layer-list多图层叠加效 ...