如何将数组存储在 SQL 表中
Posted
技术标签:
【中文标题】如何将数组存储在 SQL 表中【英文标题】:How can I store arrays in an SQL table 【发布时间】:2011-06-28 19:16:52 【问题描述】:我是 SQL 编程新手。 我的问题是关于如何在数据库中存储数组值。 例如我想协调某个部门的草图。 让它成为一家医院。 我想放置地板并为每个楼层放置空间并为每个房间放置床。
我想如果我使用一些 for 循环我可以修复它。但我做不到。
我该如何解决这个问题?
Console.Write("enter floor numbers ");
kat = int.Parse(Console.ReadLine());
Console.Write("enter room numbers ");
oda = int.Parse(Console.ReadLine());
Console.WriteLine("enter bed numbers");
yatak = int.Parse(Console.ReadLine());
for ( i = 1; i <= kat; i++)
for ( j = 1; j <= oda; j++)
for ( k = 1; k <= yatak; k++)
Console.WriteLine("total bed numbers 0 1 2", i, j, k);
如果我每一个放 2 个,我必须在 DB 中创建 8 个单元。
【问题讨论】:
您提出了一个关于显示常规 C# 程序的 SQL 的问题。当你用 SQL 编程时,你应该考虑集合而不是数组。幸运的是,数组可以存储为一个集合,但每个数组元素都需要一行。 一些 SQL 服务器(例如 Postgres)支持真正的 ARRAY 数据类型——但它们几乎总是不是您真正想要的。 faester 正确回答了您——您可能真的想将数据存储在不同的列中。 【参考方案1】:如果您正在谈论关系数据库,您需要做的是设计您的表,以便您可以存储所有对象以及它们之间的关系。 如果是您提供的示例
Hospital --> 1..many Floors --> 1..many Rooms --> 0..many Beds
(对基数做出一般假设 - 仅作为样本)
基于上述关系,每个名词都有一个表格,即 Hospital、Floors、Rooms 和 Beds。 在关系数据库中,一个 RECORD(不是一列)表示由表表示的实体的一个不同值。因此,如果您在医院有 10 个楼层,Floor 表中将有 10 条记录。
表中的每条记录都由一个称为主键的值唯一标识。
父表与其子表之间的关系是使用此主键并创建所谓的外键约束来完成的。基本上,举个例子,如果 1 楼有 10 个房间,我将在 Room 表中有楼层号,即“1”,以便能够知道哪个房间属于哪个楼层。
总体而言,虽然这不是您问题的直接解决方案,但我希望它能够帮助您了解基本的 RDBMS 概念,这些概念正是您解决问题所需要的。要查找的关键点:基数、主键和外键。
【讨论】:
以上是关于如何将数组存储在 SQL 表中的主要内容,如果未能解决你的问题,请参考以下文章
如何将 PL/SQL 的输出(XML)存储在 oracle 表中