如何在数据库中不改变表结构的前提下,新添一个属性?

有两种方法:

第一种:在初始设计表时,将被查询的属性存放在一个字段当中,并且加上版本号字段。

这样需要新增属性时,只需要将该属性放在存放所有被查询属性的字段当中。

优点是:可以随时扩展,各个版本的数据都在,迁移数据方便。

但是也有缺点:这个字段中的数据不能查询和建立索引。

所以就有了第二种方法

第二种:数据库建立三个字段:id,属性和值

每一条数据分为多行进行存储,这样添加属性的时候就是新增一行即可。

优点:可以随时扩展,各个版本的数据都在,迁移数据方便,所有的属性都能进行查询。

缺点:行数会增加很多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
商品进、销、存系 统 背景说明 待开发的软件系统的名称:商品进、销、存管理系统 软件项目的用途:用于数据库课程设计及商业用途 软件项目的范围:系统涉及企业的库存,销售与进货提供了管理 功能,为库存,销售,进货等管理数据提供了分析功能 开发小组:我们小组 小组成员: 组长:曾 炫 组员:冶福磊 陈 光 钟浩杰 李钦铭 指导老师:姚全珠 在信息技术的催化之下,世界经济的变革已经进入了加速状态。世界经济一体化,企 业经营全球化,以及高度竞争造成的高度个性化与迅速改变的客户需求,令企业与顾客 、企业与供方的关系变得更加密切和复杂。强化管理,规范业务流程,提高透明度,加 快商品资金周转,以及为流通领域信息管理全面网络化打下基础,是商品销售公司乃至 众多商业企业梦寐以求的愿望。 随着技术发展,电脑操作及管理日趋简化,电脑知识日趋普及,同时市场经济快速多 变,竞争激烈,因此企业采用电脑管理进货、库存、销售等诸多环节也已成为趋势及必 然。 系统规划 1.1 可行性分析 经济上可行性分析 现在,计算机的价格已经十分低廉,性能却有了长足的进步。而本系统的开发,为企 业的工作效率带来了一个质的飞跃,为此主要现有以下几个方面: 第一,本系统的运行可以代替人工进行许多繁杂的劳动; 第二,本系统的运行可以节省许多资源; 第三,本系统的运行可以大大的提高企业的工作效率; 第四,本系统可以使敏感文档更加安全,等等。 本产品的开发所需的设备在现有条件下,只需要少量的投入资金就可以实现。因此在 经济上是可行的。 技术上可行性分析 a. 软件可行性 C#具有丰富的数据库功能,可以直接建立和编辑数据库,使用结构化查询语言直 接访问SQL Sever上的数据库,并提供简单的面向对象的库操作命令、多用户数据库的加锁机制 和网络数据库的编程技术。 SQL Sever2000是由微软公司推出的,能提供超大型系统所需的数据库服务,并对数据库 提供全面的保护,具有防止问题发生的安全措施,他是一个采用SQL语言的关系型数 据库管理系统。作为客户机/服务器的后端数据库,他是所有数据的汇总和管理心 。 b. 硬件可行性 CPU:奔腾三代以上。 OS(操作系统):Windows2000/windows98以上。 内存:64MB以上。 硬盘:30G以上。 本系统的开发利用Microsoft SQL Server2000作为本系统的数据库,它是一个支持多用户的数据库,适用于大 规模的数据量需求。 使用C#作为系统开发的开发环境,此开发工具开发数据库管理系统,采用面向 对象的方式,方便、简捷、功能强大。 管理上可行性分析 课设指导老师给与了精心的讲解和大力的支持。 综上所述,系统在技术上、经济上、管理上都是可行的。 1.2 划分子系统 各个模块的划分 1.3 制定信息系统开发方案及日程安排 1.3.1 任务分配 陈 光:商品入库(输入) 李钦铭:信息查询(查询) 冶福磊:信息修改(修改) 钟浩杰:信息统计(统计) 曾 炫:商品销售(输出) 1.3.2 计划 需求分析阶段:用时一天。需求分析,业务逻辑,模块化分,详细分工 编码阶段:用时两天。根据需求分析进行编码 整合:待续 系统分析 2.1系统流程图 业务流程图 2.2 数据字典 重要数据及其简要描述如下所示: 1) 数据元素: 3.1 商品编号 3.2 员工编号 3.3 销售编号 3.4 库存盘点票号 2) 数据结构3.6 商品卡片 3) 数据流: 3.7 操作信息 3.9 管理信息 4) 数据存储: 3.10 进货一览 3.11 销售一览 3.12 库存一览 5) 处理过程: 3.12 销售信息单 3.13 进货信息单 .3.14 库存信息单 系统设计 3.1 代码设计 编码设计使数据库系统开发的前提条件,使系统不可缺少的重要内容。编码是指与原 来名称对应的符号和记号。它是进行信息交换、处理、传输和实现信息共享的关键。本 系统内部信息编码采用顺序码和区间码混合使用: 顺序码是用一串连续的数字来代系统的客观实体或实体属性。其优点是简单,容 易处理,但是不能反映编码对象的特征。所以用区间码来弥补这个缺点。区间码是按编 码的特点把代码分为若干个区段,每一个区段示编码对象的一个类别。 合理的编码结构是信息处理系统是否具有生命力的一个重要因素,在本系统的代码设 计时,遵循以下几个原则: a. 惟一性。每个代码只能惟一地代系统一个实体或实体属性。 b. 标准性。代码设计时采用国际或国家的标准代码。 c. 合理性。代码设计应该与编码对象的分类体系相适应,使代码对编码对象的分类有 标识作用。 d. 可扩充性。编码时留有足够的备用代码。 e. 简单性。方便输入,提高处理效率。 f. 适用性。便于识
net的最近面试经典试题ASP.NET面试题集合 1. 简述 private、 protected、 public、 internal 修饰符的访问权限。 答 . private : 私有成员, 在类的内部才可以访问。 protected : 保护成员,该类内部和继承类可以访问。 public : 公共成员,完全公开,没有访问限制。 internal: 在同一命名空间内可以访问。 2 .列举ASP.NET 页面之间传递值的几种方式。 答. 1.使用QueryString, 如....?id=1; response. Redirect().... 2.使用Session变量 3.使用Server.Transfer 3. 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。 答:public class MainClass { public static void Main() { Console.WriteLine(Foo(30)); } public static int Foo(int i) { if (i 0 && i <= 2) return 1; else return Foo(i -1) + Foo(i - 2); } } 4.C#的委托是什么?事件是不是一种委托? 答 : 委托可以把一个方法作为参数代入另一个方法。 委托可以理解为指向一个函数的引用。 是,是一种特殊的委托 5.override与重载的区别 答 : override 与重载的区别。重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要 Override 是进行基类函数的重写。为了适应需要。 6.如果在一个B/S结构的系统需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理? 答 : this.Server.Transfer 7.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty? 答: foreach (System.Windows.Forms.Control control in this.Controls) { if (control is System.Windows.Forms.TextBox) { System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control ; tb.Text = String.Empty ; } } 8.请编程实现一个冒泡排序算法? 答: int [] array = new int ; int temp = 0 ; for (int i = 0 ; i < array.Length - 1 ; i++) { for (int j = i + 1 ; j < array.Length ; j++) { if (array[j] < array) { temp = array ; array = array[j] ; array[j] = temp ; } } } 9.描述一下C#索引器的实现过程,是否只能根据数字进行索引? 答:不是。可以用任意类型。 10.求以下达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m [Page] 答: int Num = this.TextBox1.Text.ToString() ; int Sum = 0 ; for (int i = 0 ; i < Num + 1 ; i++) { if((i%2) == 1) { Sum += i ; } else { Sum = Sum - I ; } } System.Console.WriteLine(Sum.ToString()); System.Console.ReadLine() ; 11.用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层? 答:一般为3层 数据访问层,业务层,示层。 数据访问层对数据库进行增删查改。 业务层一般分为二层,业务观层实现与示层的沟通,业务规则层实现用户密码的安全等。 示层为了与用户交互例如用户添加单。 优点: 分工明确,条理清晰,易于调试,而且具有可扩展性。 缺点: 增加成本。 12.在下面的例子里 using Sy
### 回答1: 可以使用Python的pandas库来读取csv文件,并将数据插入到已经创建好的数据库。具体步骤如下: 1. 使用pandas库的read_csv函数读取csv文件,将数据读取到一个DataFrame对象。 2. 使用pandas库的to_sql函数将DataFrame对象的数据插入到数据库需要指定数据库连接信息、名和插入方式等参数。 注意,如果csv文件的列名与数据库的列名不一致,需要使用pandas库的rename函数将列名进行重命名,以便与数据库的列名对应。 示例代码如下: ```python import pandas as pd import sqlalchemy # 数据库连接信息 db_url = 'mysql+pymysql://username:password@host:port/database' # 读取csv文件 df = pd.read_csv('data.csv') # 将列名重命名为数据库的列名 df = df.rename(columns={'csv_column1': 'table_column1', 'csv_column2': 'table_column2'}) # 建立数据库连接 engine = sqlalchemy.create_engine(db_url) # 将数据插入到数据库 df.to_sql(name='table_name', con=engine, if_exists='append', index=False) ``` 注意,以上代码仅供参考,具体实现需要根据实际情况进行调整。 ### 回答2: 使用Python导入CSV文件到已经创建好的数据库需要使用数据库连接库和CSV读取库。 首先,需要创建数据库连接,并且使用合适的库进行连接。 ```python import csv import sqlite3 # 创建数据库连接 conn = sqlite3.connect('database.db') c = conn.cursor() ``` 接着,打开CSV文件并且读取其的数据。 ```python with open('data.csv', 'r') as csvfile: csvreader = csv.reader(csvfile) # 获取头 headers = next(csvreader) # 遍历每一行数据 for row in csvreader: # 将数据插入到数据库 c.execute("INSERT INTO table_name VALUES (?,?,?,?,?)", row) ``` 最后,提交更改并且关闭数据库连接。 ```python # 提交更改 conn.commit() # 关闭数据库连接 conn.close() ``` 上述代码假设已经存在一个名为`database.db`的数据库,并且其已经创建好了一个名为`table_name`的。为了使代码更贴切实际情况,你需要根据实际的数据库类型和结构进行适当的更改。 ### 回答3: 可以使用Python的pandas库来实现将csv文件导入已经创建好的数据库,并且不改变结构头。 首先,需要安装pandas库: ```python pip install pandas ``` 然后,导入pandas库并读取csv文件,将其转换为DataFrame对象: ```python import pandas as pd # 读取csv文件,并将其转换为DataFrame对象 df = pd.read_csv('data.csv') ``` 接下来,使用Python的第三方数据库连接库(如pymysql、psycopg2等)连接到数据库,并创建一个数据库连接对象: ```python import pymysql # 连接数据库 conn = pymysql.connect(host='数据库地址', port=3306, user='用户名', passwd='密码', db='数据库名') ``` 然后,使用to_sql()方法将DataFrame对象插入到已创建好的数据库,并指定名和连接对象conn: ```python # 将DataFrame对象插入数据库 df.to_sql('名', conn, if_exists='append', index=False) ``` 最后,关闭数据库连接: ```python # 关闭数据库连接 conn.close() ``` 通过以上步骤,就可以实现将csv文件导入已经创建好的数据库,同时不改变结构头。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值