Delphi5实现主要——明细型数据库应用

news2024/12/28 12:03:17

文章目录

    • 效果图
    • 主要——明细型数据库
      • 特点
    • 数据库
    • 实现方式
    • 完整代码

效果图

在这里插入图片描述

主要——明细型数据库

在Delphi中,主要——明细型数据库是一种数据库应用程序的设计模式,它涉及到多个数据库表之间的关联操作,以实现对复杂数据结构的有效管理。这种设计模式特别适用于需要展示和管理具有一对多或多对多关系的数据集的场景。

特点

  1. 数据表关联:主要——明细型数据库应用程序通常包含至少两个数据库表,其中一个表作为“主表”,存储综合信息或主要数据;另一个或多个表作为“明细表”,存储与主表相关联的详细数据。这些表之间通过共同的字段(如外键)建立关联。

  2. 一对多关系:在主要——明细型数据库中,主表和明细表之间最常见的关系是一对多关系。这意味着主表中的一条记录可以在明细表中有多条相关联的记录。例如,一个客户(主表)可以有多个订单(明细表)。

  3. 数据展示与操作:在应用程序中,用户可以通过主表浏览综合信息,并通过明细表查看与特定记录相关联的详细信息。同时,应用程序提供增、删、改、查等操作功能,允许用户对数据进行全面管理。

数据库

演示前,插入一些数据方便进行测试。

CREATE TABLE Customers (  
    CustomerID INT PRIMARY KEY IDENTITY(1,1), -- 客户编号,自增主键  
    Name VARCHAR(20), -- 姓名  
    Company VARCHAR(20), -- 所在公司  
    ContactNumber VARCHAR(20), -- 联系方式  
    -- 可以根据需要添加更多字段,如邮箱、地址等  
);

CREATE TABLE Orders (  
    OrderID INT PRIMARY KEY IDENTITY(1,1), -- 订单编号,自增主键  
    CustomerID INT, -- 客户编号,外键  
    OrderDate DATETIME, -- 订单日期  
    Amount DECIMAL(10, 2), -- 订单金额  
    -- 可以根据需要添加更多字段,如订单状态、送货地址等  
    FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID) -- 设置外键约束  
);

INSERT INTO Customers (Name, Company, ContactNumber) VALUES  
('John Doe', 'ABC Corporation', '123-456-7890'),  
('Jane Smith', 'XYZ Inc.', '098-765-4321'),  
('Mike Brown', 'MNO Ltd.', '111-222-3333');

INSERT INTO Orders (CustomerID, OrderDate, Amount) VALUES  
(1, '2023-04-01', 200.00), -- John Doe 的订单  
(1, '2023-04-15', 150.00), -- John Doe 的另一个订单  
(2, '2023-04-08', 300.00), -- Jane Smith 的订单  
(3, '2023-04-20', 120.00), -- Mike Brown 的订单  
(3, '2023-04-25', 250.00); -- Mike Brown 的另一个订单

-- 查询所有客户及其订单  
SELECT c.Name, c.Company, c.ContactNumber, o.OrderID, o.OrderDate, o.Amount  
FROM Customers c  
LEFT JOIN Orders o ON c.CustomerID = o.CustomerID  
ORDER BY c.Name, o.OrderDate;

CREATE TABLE Items (  
    ItemID INT PRIMARY KEY IDENTITY(1,1),  
    OrderID INT,  
    ProductName VARCHAR(20),  
    Quantity INT,  
    UnitPrice DECIMAL(10, 2),  
    FOREIGN KEY (OrderID) REFERENCES Orders(OrderID)  
);  

-- 假设Orders表中已经存在OrderID为1, 2, 3的订单  
-- 为OrderID为1的订单插入商品  
INSERT INTO Items (OrderID, ProductName, Quantity, UnitPrice) VALUES  
(1, 'Laptop', 1, 1200.00),  
(1, 'Mouse', 2, 30.00);  
  
-- 为OrderID为2的订单插入商品  
INSERT INTO Items (OrderID, ProductName, Quantity, UnitPrice) VALUES  
(2, 'Smartphone', 1, 800.00),  
(2, 'Power Bank', 1, 50.00);  
  
-- 为OrderID为3的订单插入商品  
INSERT INTO Items (OrderID, ProductName, Quantity, UnitPrice) VALUES  
(3, 'Keyboard', 1, 70.00),  
(3, 'Headphones', 1, 150.00),  
(3, 'USB Drive', 2, 20.00);

SELECT o.OrderID, o.OrderDate, i.ProductName, i.Quantity, i.UnitPrice  
FROM Orders o  
JOIN Items i ON o.OrderID = i.OrderID  
ORDER BY o.OrderID, i.ProductName;

实现方式

在Delphi中,实现主要——明细型数据库应用程序通常涉及以下步骤和组件:

  1. 设置数据表:使用TTable或TADOTable等组件连接到数据库中的主表和明细表。这些组件提供了对数据库表进行增、删、改、查等操作的方法。

客户表
在这里插入图片描述
订单表
在这里插入图片描述
订单明细表
在这里插入图片描述

  1. 建立数据关联:通过设置TDataSource组件的DataSource属性,将主表和明细表连接起来。通常,主表的数据源直接连接到TDataSource,而明细表的数据源则连接到另一个TDataSource,该TDataSource的MasterSource属性设置为与主表相关联的TDataSource。

订单表数据表在这里插入图片描述
客户编号数据表(其他编辑框类似操作)
在这里插入图片描述
订单表数据表(明细表类似操作)
在这里插入图片描述

  1. 数据展示:使用TDBGrid、TDBNavigator等数据库控制组件展示数据。TDBGrid组件用于显示数据库表中的数据,而TDBNavigator组件则提供了导航和操作数据的便捷方式。

导航栏数据源在这里插入图片描述
订单明细表数据源(其他数据表操作类似)
在这里插入图片描述

  1. 数据格式:虽然字段对象是不可见的,但是它同样具有很多属性。

在这里插入图片描述

完整代码

在这。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2086356.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构(邓俊辉)学习笔记】串 16——Karp-Rabin算法:串即是数

文章目录 1. 化串为数2. 凡物皆数3. 亦是数 1. 化串为数 接下来的这节,我们再来讨论一种十分另类的串匹配算法,也就是所谓的 Karp-Rabin 算法。回顾此前所介绍的几种串匹配算法,我们所面临的难题是一样的。也就是说在这里,我们每次…

ES配合高德地图JS-API实现地理位置查询

目录 实现功能点 技术选型 具体实现 Vue3整合高德地图JS API-2.0 添加商户:前端 添加商户:后端/ES 查询用户当前地理坐标 获取附近(指定距离)的商户 总结/测试Demo代码地址 测试概述:用户使用高德地图组件获取商户…

GPT实现的adb shell命令实现某音自动点赞和关注

摘要:这个可能是没啥用的自动点赞和关注功能,自娱自乐为主哈 具体可行性步骤如下: 1.打开手机的开发者选项,将指针位置的设置开关打开,目的是看触屏时的坐标值 2.随便打开一个抖音,找到点赞的爱心图标的坐标轴,并记下来,待会有用 备注:尽量获取爱心尖端的坐标值,由…

erlang学习:用OTP构建系统2,警报管理

今日学习用OTP构建系统的警报管理, 首先进行配置错误记录器 [{sasl,[{sasl_error_logger, false},{error_logger_mf_dir, "/code/erlang/erlangstudy"},{error_logger_mf_maxbytes, 10485760},{error_logger_mf_maxfiles, 10}]} ].警报处理器gen_event的…

【Material-UI】Slider 组件中的 Discrete Sliders 详解

文章目录 一、Slider 组件概述1. 组件介绍2. Discrete Sliders 的特点 二、Discrete Sliders 的基本用法1. step 属性2. marks 属性3. valueLabelDisplay 属性 三、深入理解 Discrete Sliders 的配置1. 自定义刻度标记2. 限制可选值3. 设置较小的步长4. 始终显示值标签 四、应用…

Win10+GTX1050Ti安装Pytorch

目的 本文主要记录自己安装pytorch过程。 环境:win10 pycharm 显卡:GTX1050Ti 过程记录 1、确认pytorch版本 打开pytorch官网:https://pytorch.org/ 选择stable 2.3.0 版本,CUDA有11.8及12.1,我们看看GTX1050Ti支持…

发红包案例(java)

User类创建 public class User {private String name;private int money;public User(){}public User(String name,int money){this.namename;this.moneymoney;}public void show(){System.out.println("Name:"name" Money:"money);}public String getNam…

ruoyi-vue-pro(v3)

启动上的问题 这里第二部npm install会有问题 切换成http 解决SSL 证书问题导致的连接错误 npm config set registry http://registry.npm.taobao.org/

Zookeeper 官方示例2-SyncPrimitive 代码解读(二)

测试命令 java jar .\ZookeeperDemo-0.0.1-SNAPSHOT.jar bTest 192.168.206.100:2181 2 1. Barrier(阻塞原语) 1.1 概念 [!quote] A barrier is a primitive that enables a group of processes to synchronize the beginning and the end of a comput…

猫头虎 分享:Python库 NumPy 的简介、安装、用法详解入门教程

猫头虎 分享:Python库 NumPy 的简介、安装、用法详解入门教程 🐱🐯 摘要 在Python编程领域,特别是人工智能和数据科学方向,NumPy库的重要性不言而喻。 作为一个强大且广泛使用的库,NumPy为我们提供了处理…

WLAN原理实验简述——AP上线

一、需求: AP通过AC上线。 AC通过控制VLAN管理AP,创建VLAN100和放行。 AP同AC建立CAPWAP关系。 二、实验拓扑图: 三、实验步骤: LSW1: sys Enter system view, return user view with CtrlZ. [Huawei]Sysname lsw1 [lsw1]undo info enable I…

vue-ueditor-wrap设置autoHeightEnabled:true无效问题

问题描述 今天小伙伴遇到一个问题,使用vue-ueditor-wrap富文本编辑器,发现设置autoHeightEnabled为true后,对于某些文章,编辑器的高度依然没有按照实际的文章内容高度进行变化: 问题排查 通过调试代码发现是文章html…

C语言实现经典排序算法

1.排序的概念及其运用 1.1排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记…

SAP BW/BPC:实现自动执行BPC跑包程序

作者 idan lian 如需转载备注出处 如果对你有帮助,请点赞收藏~~~ 用途:创建程序,跑BPC包,把数据从BW应用层跑到BPC,程序可放到处理链或自动作业中,实现定时跑包。 1.步骤 首先需要BPC顾问创建一个他们手动执行的包…

数据挖掘之分类算法

分类算法是数据挖掘中常用的一类算法,其主要任务是根据已知的训练数据(即带有标签的数据)构建模型,然后利用该模型对新的数据进行分类。分类算法广泛应用于金融、医疗、市场营销等领域,用于预测、决策支持等任务。以下…

并查集【算法 12】

并查集 (Union-Find) 的基础概念与实现 并查集(Union-Find)是一种用于处理不相交集合(disjoint sets)的数据结构,常用于解决连通性问题。典型的应用场景包括动态连通性问题(如网络节点连通性检测&#xff0…

数据库sqlite3

数据库 数组、链表、变量 ----->内存:程序运行结束,掉电数据丢失 文件 ----------------------->硬盘:程序运行结束,掉电数据不丢失 数据库:专业存储数据、大量数据 ----->硬盘 常用数据库: …

linux 如何查看cpu核心数量

在Linux系统中,有多种方法可以查看CPU的核心数量。 一、lscpu lscpu命令是最直接的方法之一,它可以显示CPU架构信息,包括CPU数量、每个CPU的核心数、每个核心的线程数等。要查看CPU核心数量,可以直接查看lscpu命令输出的Core(s) …

力扣面试150 删除排序链表中的重复元素 II 哑兵 双指针

Problem: 82. 删除排序链表中的重复元素 II 👨‍🏫 灵神题解 Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* List…

企业车辆|基于SprinBoot+vue的企业车辆管理系统(源码+数据库+文档)

企业车辆管理系统 基于SprinBootvue的企业车辆管理系统 一、前言 二、系统设计 三、系统功能设计 系统功能实现 后台模块实现 管理员模块实现 驾驶员模块实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主…