|
#1
|
|||
|
|||
Связь таблиц в БД
Добрый день!
Подскажите пожалуйста, как правиль организовать связь таблиц между собой. Пишу базу на Delphi 7, средство доступа - BDE, таблицы - Paradox. ИСпользуется несколько таблиц: Doctor(Vrach,kod[*]), Otdelenie(Naimenovanie,KodOtdel[*),Base(Familia,Date,Kod (берется из Doctor) и Otdelenie (берется из Otdelenie) ). Как правильно считать коды Врача (Выбирается отдельно из ListBox-а, который заполняется из базы Doctor) и Отделения (соответственно тоже выбирается в ListBox-е) и внести их в таблицу Base? Заранее благодарен! |
#2
|
||||
|
||||
Даже не знаю с чего начать.
1. Для работы с БД обычно используются специальные компоненты типа DBGrid,DBEdit,DBListBox,DBLookupListBox и т.д. Их функционала хватает с избытком для стандартных задач. Находится все это счастье на вкладе Data control 2. Ваш вариант БД вызывает очень много вопросов и замечаний. Описывать в рамках данного ответа что и как вы сделали неправильно, я даже не возьмусь. Поэтому предлагаю альтернативу. Вы выкладываете описание задачи (как можно подробнее), мы здесь выкладываем вариант БД. Вы его изучаете, вносите свои поправки и задаете вопросы. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
||||
|
||||
Страдалецъ, +1
Коли навчався в школі я - в мені росли мозгЫ. КудИж вони поділися? гы-гы гы-гы гы-гы... ICQ: 593977748 Nick: Marvel |
#4
|
|||
|
|||
Вот примерно такой вид имеет бущующая программа (в файле). Это программа записи людей на прием к врачу (врачам).
В самом верху выбирается фамилия врача и дата. И затем в базе осуществляется поиск по дате и фамилии и соответствующее время записывается в соответсвующую строчку. Если записанного нет, то строка остается свободной для возможности записи больного. Т.о. имеется база врачей, база отделений (кардиология, кардиохирургия и т.д.) и общая база, в которую заносятся Дата, фамилия врача, фамилия больного, отделение, [еще кучя всякого] и сумма оплаты. Из всего этого потом нужно будет формировать отчет. Последний раз редактировалось Justin, 29.06.2010 в 07:39. |
#5
|
|||
|
|||
Цитата:
Фамилию врача из 3-й таблицы в топку. она (фамилия) у тебя должна быть в таблице врачей. в 3-й за место нее храним ID номер из первой. Та же песня и с отделением. ПС. Таблица=База (вашим сленгом ) |
#6
|
|||
|
|||
Руки оторвать таким программистам.
1. Берем нормальную БД, а не этот ублюдочный Paradox. Как ты собираешься на Paradox завсети 2х операторов на одной БД (точнее, это можно, но задача это не тривиальная). 2. Нафиг отдельные компоненты для вывода строчек. Для этого есть специальный компонент - DBGrid. 3. Структура БД для твоей проги будет прим ерно такая: Код:
CREATE TABLE OTDELENIE ( ID INTEGER PRIMARY KEY, NAME VARCHAR(255) ); CREATE TABLE DOCTOR ( ID INTEGER PRIMARY KEY, OTDELENIE_ID INTEGER REFERENCE OTDELENIE(ID), NAME VARCHAR(255) -- Здесь еще можно добавить разной фигни о враче ); CREATE TABLE PATIENT ( ID INTEGER PRIMARY KEY, NAME VARCHAR(255), DOB DATE -- Здесь еще можно добавить разной фигни о пациенте ); CREATE TABLE VISITS ( ID INTEGER PRIMARY KEY, V_DATE DATE, -- TIMESTAMP или отдельное поле TIME - зависит от БД DOCTOR_ID INTEGER REFERENCE DOCTOR(ID), PATIENT_ID INTEGER REFERENCE PATIENT(ID), PRICE NUMBER(18,4) -- стоимость -- еще другая фигня о визите ); |
#7
|
|||
|
|||
Цитата:
|
#8
|
||||
|
||||
Цитата:
Цитата:
Цитата:
Цитата:
А вообще - это реальная работа. РАботаю в медицине. Дали задание написать такую прогу. |
#9
|
|||
|
|||
Используя например DBCombobox например.
либо так же грид. ПС. Стукни в аську проще будет помочь 11198089четыре Последний раз редактировалось Black Raider, 30.06.2010 в 08:27. |
#10
|
|||
|
|||
1. для такой задачи лучше брать все таки SQL-ную минимум Interbase Или его клон. хотя по мне лучше MSSql
2. с 2-мя пользователями будет работать но глючно и с танцами переодическими. типа с lock файлами там геморой. 3. все таки с гридом намного лучше. Последний раз редактировалось Black Raider, 30.06.2010 в 08:25. |