作者BigLoser (大鲁蛇)
看板Database
标题Re: [SQL ] 新手求助,总数上限不确定的资料栏位
时间Sun Sep 21 20:19:32 2014
※ 引述《meowyih (meowyih)》之铭言:
: 资料库名称:MySQL
: 我只有非常基本的资料库的经验,如果问题太笨,请见谅 m(_ _)m
: 举例来说,假设一个人的 TABLE 的栏位有名字、地址、和个人照片:
: 但是因为某些原因,我们被要求一个人的图片和地址的总数不能有上限,
: 有人可能没图片与地址,有人可能有上百个图片和地址,
: 请问这种情况的 TABLE 要长成什麽样,或是资料库要怎麽设计呢?
这位温拿你好,可以参考一下本鲁蛇的做法,
因为这个状况中,地址和个人照片是相似的东西,所以本鲁蛇只拿其中一个做举例,
这个资料库,需要至少两个资料表:
1.
人资料表,用来存放这个人的资讯
2.
地址资料表,用来存放所有人的地址,而其中会有一个栏位与人资料表
相关联,来表明这个
(一或多个)地址属於哪个人。
人资料表
主索引键 姓名
50 胜文
地址资料表
主索引键 人资料表索引键 地址
100 50 台北帝宝
101 50 美国帝宝
当你有了这样的资料,就可以利用join的技巧,查出某个人拥有那些帝宝了。
这边是查询语法:
select 人资料表.姓名, 地址资料表.地址 from 人资料表
left join 地址资料表 on 人资料表.主索引键 = 地址资料表.人资料表索引键
where 人资料表.主索引键 = 50
结果会是:
姓名 地址
胜文 台北帝宝
胜文 美国帝宝
因为本鲁蛇没有把档案放到过网路上,所以就直接把指令码贴出来了,
希望有善心人士可以推荐本鲁蛇一个方便其他人下载档案的方式。
以下是这个资料库的指令码:
USE [批踢踢资料库板]
GO
/****** Object: Table [dbo].[人资料表] Script Date: 2014/9/21 下午
08:16:36 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[人资料表](
[主索引键] [int] NOT NULL,
[姓名] [nvarchar](20) NOT NULL,
CONSTRAINT [PK_人资料表] PRIMARY KEY CLUSTERED
(
[主索引键] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[地址资料表] Script Date: 2014/9/21 下午
08:16:36 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[地址资料表](
[主索引键] [int] NOT NULL,
[人资料表索引键] [int] NOT NULL,
[地址] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_地址资料表] PRIMARY KEY CLUSTERED
(
[主索引键] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
INSERT [dbo].[人资料表] ([主索引键], [姓名]) VALUES (50, N'胜文')
INSERT [dbo].[地址资料表] ([主索引键], [人资料表索引键], [地址]) VALUES (100,
50, N'台北帝宝')
INSERT [dbo].[地址资料表] ([主索引键], [人资料表索引键], [地址]) VALUES (101,
50, N'美国帝宝')
--
我觉得
TSQL是世界上最强的语言了
阿卖波D甲T ◥▁▁▁▁ ◢
麦
其他的应该废除
萨西斯B骨S ◤
██ /-
科
斯抠鬼2文Q □–□◢◤ 舒
如果各位有兴趣的话,可以现在开始学
L ▼ㄑ ◢ 服
但是要安装
SQL Server ψBigLoser ▼ㄧ /◣ 特
因为我们只会支援
精英资料库,绝对不会接受
垃圾 ψdohProject ◢ /◣– ◤ /█◣
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 113.61.160.28
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Database/M.1411301974.A.4F3.html
※ 编辑: BigLoser (113.61.160.28), 09/21/2014 20:20:06
1F:推 meowyih: 受教了! 非常感谢这篇清楚又详细的说明! m(_ _)m 09/21 20:35
2F:→ BigLoser: 阿,我这两个资料表没设关联,请温拿们自己设定 09/21 20:35
3F:推 lasda: 绝对不接受垃圾 09/22 18:18