Қисми якум
Мо эҷоди эмулятори оддии биржаи худро идома медиҳем. Ин аст он чизе ки мо мекунем:
- Биёед диаграммаи ташкor базаи маълумотро созем.
- Мо тавсиф хоҳем кард, ки он чӣ, чӣ гуна ва дар куҷо нигоҳ дошта мешавад.
- Биёед бифаҳмем, ки маълумот бо ҳамдигар чӣ гуна алоқаманд аст.
- Биёед бо истифода аз мисоли фармони сохтани ҷадвали SQL CREATE TABLE , Data Definition Language ( DDL ) -и забони SQL ба омӯзиши асосҳои SQL шурӯъ кунем.
- Биёед ба навиштани барномаи Java идома диҳем. Мо вазифаҳои асосии DBMS-ро аз нуқтаи назари java.sql барои эҷоди пойгоҳи додаҳои худ ба таври барномавӣ, бо истифода аз JDBC ва меъмории сесатҳа амалӣ менамоем.
Ин ду қисм ҳаҷмтар шуданд, зеро мо бояд бо асосҳои SQL ва ташкor DBMS аз дарун шинос шавем ва бо Java аналогияҳо кашем. Барои он ки шуморо бо рӯйхатҳои codeҳо дилгир накунанд, дар охир истинодҳо ба анбори мувофиқи commit github бо барнома мавҷуданд.
Тарҳрезии DBMS
Тавсифи ариза
Шумо аллакай шунидаед, ки ташкor нигаҳдории маълумот қисми ҷудонашавандаи барномасозӣ мебошад. Хотиррасон мекунам, ки ҳадафи барномаи мо соддатарин эмуляцияи мубодила мебошад:
- Саҳмияҳое ҳастанд, ки арзиши онҳо дар давоми рӯзи савдо тибқи қоидаҳои додашуда метавонанд тағйир ёбанд;
- тоҷирон бо сармояи ибтидоӣ вуҷуд доранд;
- тоҷирон метавонанд саҳмияҳоро мувофиқи алгоритми худ бихаранд ва фурӯшанд.
Мубодила
бо тикҳо амал мекунад - давраҳои муқарраршудаи вақт (дар ҳолати мо - 1 дақиқа). Ҳангоми ишора, нархи саҳмия метавонад тағир ёбад ва он гоҳ тоҷир метавонад саҳмияҳоро харад ё фурӯшад.
Сохтори додаҳои эмуляцияи мубодила
Биёед моделҳои субъектҳои мубодилаи инфиродӣ номида шаванд. Барои роҳ надодан ба хатогиҳои яклухткунӣ, мо бо маблағҳои молиявӣ тавассути синф кор хоҳем кард
BigDecimal
(тафсилотро дар истиноди охири мақола пайдо кардан мумкин аст). Биёед сохтори ҳар як моделро муфассалтар тавсиф кунем:
Пешбурди:
Аттрибут |
Навъи |
Тавсифи |
name |
Srting |
Ном |
changeProbability |
int |
Эҳтимолияти тағирёбии қурб ҳамчун фоиз дар ҳар як ишора |
startPrice |
Даҳӣ калон |
Арзиши ибтидоӣ |
delta |
int |
Маблағи ҳадди аксар бо фоиз, ки арзиши ҷорӣ метавонад тағир ёбад |
Нархи саҳмияҳо:
Аттрибут |
Навъи |
Тавсифи |
operDate |
LocalDateTime |
Вақт (бел) барои муқаррар кардани нарх |
share |
Таблиғ |
Истинод ба таблиғ |
rate |
Даҳӣ калон |
Нархи саҳмияҳо |
Тоҷир:
Аттрибут |
Навъи |
Тавсифи |
name |
Сатр |
Вақт (бел) барои муқаррар кардани нарх |
sfreqTick |
int |
Давомнокии амалиёт. Муайян аз ҷониби давра, дар ticks, ки пас аз он савдогар амалиёти анҷом медиҳад |
cash |
Даҳӣ калон |
Маблағи пул ба ғайр аз саҳмияҳо |
traidingMethod |
int |
Алгоритм, ки аз ҷониби савдогар истифода мешавад. Биёед онро ҳамчун рақами доимӣ муқаррар кунем, татбиқи алгоритм (дар қисмҳои зерин) дар codeи Java хоҳад буд. |
changeProbability |
int |
Эҳтимолияти анҷоми амалиёт, фоиз |
about |
Сатр |
Эҳтимолияти тағирёбии қурб, бо фоиз, дар ҳар як ишора |
Амалҳои савдогар:
Аттрибут |
Навъи |
Тавсифи |
operation |
int |
Навъи муомилот (харидан ё фурӯш) |
traider |
Тоҷир |
Пайванди савдогар |
shareRate |
Нархи саҳмияҳо |
Пайванд ба нархи саҳмияҳо (мутаносибан, худи саҳмия, қурби он ва вақти интишори он) |
amount |
дароз |
Шумораи саҳмияҳои дар муомилот иштирокдошта |
Барои таъмини беназирии ҳар як модел, мо атрибути
id
навъи
long илова мекунем .
Ин атрибут дар мисолҳои намунавӣ беназир хоҳад буд ва онро ба таври беназир муайян мекунад. Хусусиятҳое, ки ба моделҳои дигар истинод мекунанд (савдогар, саҳҳомӣ, нархи саҳҳомӣ) метавонанд инро
id
барои муайян кардани модели мувофиқ истифода баранд. Дарҳол фикре ба сар меояд, ки мо метавонем
Map<Long, Object>
барои нигоҳ доштани чунин маълумот истифода барем, ки
Object
модели мувофиқ дар куҷост. Аммо, кӯшиш кунед, ки инро дар code дар шароити зерин татбиқ кунед:
- андозаи маълумот аз ҳаҷми RAM дастрас ба таври назаррас зиёд аст;
- дастрасӣ ба маълумот аз даҳҳо ҷойҳои гуногун интизор аст;
- қобorяти ҳамзамон тағир додан ва хондани маълумот талаб карда мешавад;
- қоидаҳои ташаккул ва якпорчагии маълумотро таъмин кардан лозим аст;
...ва шумо бо вазифаҳое рӯ ба рӯ мешавед, ки тахассуси мувофиқ ва вақтро талаб мекунанд. «Чархро аз нав ихтироъ кардан» лозим нест. Барои мо аллакай бисьёр чизхо фикр карда ва навишта шудаанд. Ҳамин тавр, мо он чизеро, ки дар тӯли солҳо санҷида шудааст, истифода хоҳем бурд.
Нигоҳ доштани маълумот дар Java
Биёед амалро баррасӣ кунем. Дар Java, мо барои ин модел синфи мушаххасро
Share
бо майдонҳои
name
,
changeProbability
,
startPrice
, , сохтем
delta
. Ва бисёр саҳмияҳо ҳамчун , нигоҳ дошта шуданд
Map<Long, Share>
, ки дар он калид идентификатори беназир барои ҳар як саҳмия аст.
public class Share {
private String name;
private BigDecimal startPrice;
private int changeProbability;
private int delta;
}
Map<Long, Share> shares = new HashMap<>();
shares.put(1L, new Share("ibm", BigDecimal.valueOf(20.0), 15, 10));
shares.put(2L, new Share("apple", BigDecimal.valueOf(14.0), 25, 15));
shares.put(3L, new Share("google", BigDecimal.valueOf(12.0), 20, 8));
...
shares.put(50L, new Share("microsoft", BigDecimal.valueOf(17.5), 10,4 ));
Барои дастрасӣ ба таблиғи дилхоҳ тавассути ID, усули
shares.get(id)
. Барои вазифаи дарёфти саҳмияҳо аз рӯи ном ё нарх, мо тамоми сабтҳоро меҷӯем, ки ба мо лозим аст ва ғайра. Аммо мо бо роҳи дигар меравем ва арзишҳоро дар DBMS нигоҳ медорем.
Нигоҳдории маълумот дар DBMS
Биёед маҷмӯи ибтидоии қоидаҳои нигоҳдории маълумотро барои DBMS таҳия кунем:
- Маълумот дар МДМ ба ҷадвалҳо ( ҶАДВАЛ ), ки маҷмӯи сабтҳо мебошанд, ташкил карда мешаванд.
- Ҳама сабтҳо маҷмӯи якхела доранд. Онҳо ҳангоми сохтани ҷадвал муқаррар карда мешаванд.
- Майдонро метавон ба арзиши пешфарз таъин кард ( DEFAULT ).
- Барои ҷадвал шумо метавонед маҳдудиятҳо муқаррар кунед ( CONSTRAINT ), ки талаботро барои додаҳои он тавсиф мекунанд, то тамомияти онҳоро таъмин кунанд. Инро метавон дар марҳилаи сохтани ҷадвал анҷом дод ( CREATE TABLE ) ё дертар илова кард ( ALTER TABLE ... ADD CONSTRAINT ).
- МАЪЛУМОТИ маъмултарин :
- Калиди ибтидоӣ PRIMARY аст (Id дар ҳолати мо).
- Майдони арзиши беназири UNIQUE (VIN барои ҷадвали нақлиёт).
- Санҷиши майдони CHECK (қимати фоиз набояд аз 100 зиёд бошад). Яке аз маҳдудиятҳои хусусӣ дар майдон NO NULL ё NULL мебошад , ки нигоҳдории NULL-ро дар майдони ҷадвал манъ мекунад/иҷоза медиҳад.
- Истинод ба ҷадвали тарафи сеюм КАЛИДИ ХОРИҶӢ (пайванд ба саҳмия дар ҷадвали нархи саҳмияҳо).
- Index INDEX (индекс кардани майдон барои суръат бахшидан ба ҷустуҷӯи арзишҳо дар он).
- Тағйир додани сабт ( INSERT , UPDATE ) рӯй нахоҳад дод, агар арзишҳои майдонҳои он ба маҳдудиятҳо (CONSTRAINT) мухолиф бошанд.
- Ҳар як ҷадвал метавонад як майдони калидӣ (ё якчанд) дошта бошад, ки онҳоро барои ягона муайян кардани сабт истифода бурдан мумкин аст. Чунин майдон (ё майдонҳо, агар онҳо калиди таркибӣ бошанд) калиди ибтидоии ҷадвалро ташкил медиҳанд - PRIMARY KEY .
- Калиди ибтидоӣ ягонагии сабтро дар ҷадвал таъмин мекунад, дар он индекс сохта мешавад, ки дастрасии зудро ба тамоми сабт дар асоси арзиши калидӣ медиҳад.
- Доштани калиди ибтидоӣ эҷоди пайвандҳоро байни ҷадвалҳо хеле осон мекунад. Баъдан, мо калиди ибтидоии сунъиро истифода мебарем: барои сабти аввал
id = 1
ҳар як сабти минбаъда ба ҷадвал ворид карда мешавад, ки арзиши id як маротиба зиёд мешавад. Ин калид аксар вақт AutoIncrement ё AutoIdentity номида мешавад .
Дар асл, ҷадвали саҳмияҳо:
Оё дар ин ҳолат номи саҳмияро ҳамчун калид истифода бурдан мумкин аст? Умуман - бале, аммо эҳтимол дорад, ки баъзе ширкатҳо саҳмияҳои гуногунро бароварда, онҳоро танҳо бо номи худ даъват кунанд. Дар ин ҳолат, дигар беназир нахоҳад буд. Дар амал, калиди ибтидоии сунъӣ аксар вақт истифода мешавад. Розӣ шавед, истифодаи номи пурра ҳамчун калиди ягона дар ҷадвале, ки сабтҳои одамонро дар бар мегирад, беназириро таъмин намекунад. Инчунин истифодаи омезиши номи пурра ва санаи таваллуд.
Намудҳои маълумот дар DBMS
Мисли ҳама гуна забони барномасозӣ, SQL дорои чопкунии маълумот мебошад. Инҳоянд намудҳои маъмултарини маълумоти SQL:
Навъҳои бутун
навъи SQL |
Синонимҳои SQL |
Мутобиқшавӣ дар Java |
Тавсифи |
INT |
INT4, INTEGER |
java.lang.Integer |
адади бутуни 4 byte, -2147483648 … 2147483647 |
БУЛИН |
БУЛ, БИТ |
java.lang.Loolean |
Рост, Дурӯғ |
TINYINT |
|
java.lang.Byte |
Шумораи бутуни 1-byte, -128 … 127 |
САЛИНТ |
INT2 |
java.lang.Short |
2-byteи бутун, -32768 … 32767 |
КАЛОН |
INT8 |
java.lang.long |
Шумораи бутуни 8-byte, -9223372036854775808 … 9223372036854775807 |
AUTO_INCREMENT |
ЗИЁД |
java.lang.long |
Ҳисобкунаки афзоянда, ки ба ҷадвал хос аст. Агар ба он арзиши нав ворид карда шавад, он ба як зиёд мешавад.Қиматҳои тавлидшуда ҳеҷ гоҳ такрор намешаванд. |
Реал
навъи SQL |
Синонимҳои SQL |
Мутобиқшавӣ дар Java |
Тавсифи |
ДАҲӢ(Н,М) |
ДЕК, РАКАМИ |
java.math.BigDecimal |
Дақиқи даҳии собит (N адади бутун ва M рақами касрӣ). Асосан барои кор бо маълумоти молиявӣ пешбинӣ шудааст. |
ДУБОРА |
FLOAT8 |
java.lang.Double |
Рақами воқеии дақиқи дукарата (8 byte). |
РЕАЛ |
FLOAT4 |
java.lang.Real |
Рақами воқеии ягонаи дақиқ (4 byte). |
Сатр
навъи SQL |
Синонимҳои SQL |
Мутобиқшавӣ дар Java |
Тавсифи |
ВАРЧАР(Н) |
НВАРЧАР |
java.lang.String |
Сатри UNICODE дарозии N. Дарозии маҳдуд бо 2147483647 Тамоми мундариҷаи сатрро ба хотира бор мекунад. |
сана ва вақт
навъи SQL |
Синонимҳои SQL |
Мутобиқшавӣ дар Java |
Тавсифи |
ВАҚТ |
|
java.time.LocalTime, java.sql.Time |
Вақти нигоҳдорӣ (то наносонияҳо), ҳангоми табдил додан ба DATETIME, сана ба 1 январи соли 1970 муқаррар карда мешавад. |
САНА |
|
java.time.LocalDate, java.sql.Timestamp |
Нигоҳ доштани санаҳо дар формати yyyy-mm-dd, вақт ҳамчун 00:00 муқаррар карда шудааст |
DATETIME |
МАРКАЗИ ВАҚТ |
java.time.LocalDateTime, java.sql.Timestamp |
Санаи нигоҳдорӣ + вақт (бе назардошти минтақаҳои вақт). |
Нигоҳдории миқдори зиёди маълумот
навъи SQL |
Мутобиқшавӣ дар Java |
Тавсифи |
БЛОБ |
java.io.InputStream, java.sql.Blob |
Нигоҳ доштани маълумоти дуӣ (тасвирҳо, файлҳо...). |
CLOB |
java.io.Reader, java.sql.Clob |
Нигоҳ доштани маълумоти калони матнӣ (китобҳо, мақолаҳо...), бар хилофи VARCHAR, маълумотро ба хотира қисм-қисм бор мекунад. |
Услуби навиштани SQL
Барои бисёр забонҳо дастурҳои форматкунии code мавҷуданд. Одатан, чунин ҳуҷҷатҳо қоидаҳои номгузории тағирёбандаҳо, константаҳо, усулҳо ва дигар сохторҳои забонро дар бар мегиранд. Ҳамин тавр, барои Python PEP8 вуҷуд дорад, барои
Java - Conventions Code Oracle барои Java . Барои SQL якчанд маҷмӯаҳои гуногун сохта шудаанд, ки аз ҳамдигар каме фарқ мекунанд. Новобаста аз он, шумо бояд одати риояи қоидаҳоро ҳангоми формат кардани codeи худ инкишоф диҳед, хусусан агар шумо дар як гурӯҳ кор кунед. Масалан, қоидаҳо метавонанд инҳо бошанд (албатта, шумо метавонед як қатор қоидаҳоро барои худ таҳия кунед, чизи асосӣ ин аст, ки дар оянда ба онҳо риоя кунед):
- Калидвожаҳо ва калимаҳои ҳифзшуда, аз ҷумла фармонҳо ва операторҳо, бояд бо ҳарфҳои калон навишта шаванд: CREATE TABLE, COSTRAINT...
- Номҳои ҷадвалҳо, майдонҳо ва дигар an objectҳо набояд бо калимаҳои калидии забони SQL мувофиқат кунанд (ба истиноди охири мақола нигаред), вале метавонанд онҳоро дар бар гиранд.
- Номҳои ҷадвал бояд ҳадафи онҳоро инъикос кунанд. Онҳо бо ҳарфҳои хурд навишта шудаанд. Калимаҳои ном аз ҳамдигар бо аломатҳои зер ҷудо карда мешаванд. Калимаи дар охир бояд дар ҷамъ бошад : тоҷирон (тоҷирон), саҳмияҳо (қурби саҳмияҳо).
- Номҳои майдони ҷадвал бояд ҳадафи онҳоро инъикос кунанд. Онҳо бояд бо ҳарфҳои хурд навишта шаванд, калимаҳои ном бояд дар сабки Camel Case формат карда шаванд ва калимаи охири он бояд дар ҳарфи ягона истифода шавад : ном (ном), share_rates (қурби саҳмия).
- Майдонҳои калиди сунъӣ бояд калимаи id дошта бошанд.
- Номҳои COSTRAINT бояд конвенсияҳои номгузории ҷадвалро риоя кунанд. Онҳо инчунин бояд майдонҳо ва ҷадвалҳои дар онҳо иштирокдоштаро дар бар гиранд, бо префикси семантикӣ оғоз карда шаванд: check_ (санҷиши арзиши майдон), pk_ (калиди аввалия), fk_ (калиди хориҷӣ), uniq_ (бетакрории майдон), idx_ (индекс). Мисол: pk_traider_share_actions_id (калиди асосӣ дар майдони id барои ҷадвали trader_share_actions).
- Ва ғайра, вақте ки шумо SQL-ро меомӯзед, рӯйхати қоидаҳо пурра карда мешаванд/тағйир дода мешаванд.
Тарҳрезии DBMS
Дарҳол пеш аз сохтани DBMS, он бояд тарҳрезӣ шавад. Схемаи ниҳоӣ дорои ҷадвалҳо, маҷмӯи майдонҳо, CONSTRAINT, калидҳо, шартҳои пешфарз барои майдонҳо, муносибатҳои байни ҷадвалҳо ва дигар an objectҳои пойгоҳи додаҳо мебошад. Дар Интернет шумо метавонед бисёр тарроҳони ройгони онлайн/офлайнро барои тарҳрезии DBMS-ҳои хурд пайдо кунед. Кӯшиш кунед, ки дар муҳаррики ҷустуҷӯ чизе монанди "Дизайнери пойгоҳи додаҳо ройгон" нависед. Чунин барномаҳо дорои хосиятҳои иловагии муфид мебошанд:
- Метавонад фармонҳои SQL-ро барои эҷоди DBMS тавлид кунад.
- Танзимотҳоро дар диаграмма ба таври визуалӣ нишон диҳед.
- Ба шумо имкон медиҳад, ки ҷадвалҳоро барои визуализатсияи беҳтар интиқол диҳед.
- Дар диаграмма калидҳо, индексҳо, муносибатҳо, арзишҳои пешфарз ва монанди инҳоро нишон диҳед.
- Онҳо метавонанд схемаи DBMS-ро фосилаи дур нигоҳ доранд.
Масалан,
dbdiffo.com калидҳоро таъкид мекунад, майдонҳои холӣ ва ҳисобкунакҳои AI (AutoIncrement) бо нишони NN нишон медиҳад:
Эҷоди ҷадвалҳо дар DBMS
Пас, мо диаграмма дорем. Акнун биёед ба сохтани ҷадвалҳо (CREATE TABLE) мегузарем. Барои ин ба мо тавсия дода мешавад, ки маълумоти пешакӣ дошта бошем:
- номи ҷадвал
- номҳои майдон ва намуди
- маҳдудиятҳо (МАХДУДҲО) дар майдонҳо
- арзишҳои пешфарз барои майдонҳо (агар мавҷуд бошад)
- калиди ибтидоӣ (PRIMARY KEY) агар дастрас бошад
- Пайвастшавӣ байни ҷадвалҳо (КАЛИДИ ХОРИҶӢ)
Мо ҳама вариантҳои фармони CREATE TABLE-ро муфассал омӯхта наметавонем; мо бо истифода аз мисоли сохтани ҷадвал барои савдогарон асосҳои SQL-ро дида мебароем:
CREATE TABLE traiders(
id BIGINT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
freqTiсk INTEGER NOT NULL,
cash DECIMAL(15,2) NOT NULL DEFAULT 1000,
tradingMethod INTEGER NOT NULL,
changeProbability INTEGER NOT NULL DEFAULT 50,
about VARCHAR(255) NULL
);
ALTER TABLE traiders ADD CONSTRAINT check_traiders_tradingMethod
CHECK(tradingMethod IN (1,2,3));
ALTER TABLE traiders ADD CONSTRAINT check_traiders_changeProbability
CHECK(changeProbability <= 100 AND changeProbability > 0)
Биёед муфассалтар назар андозем:
CREATE TABLE traiders
(тавсифи майдон) - ҷадвалро бо номи муайян месозад, дар тавсиф майдонҳо бо вергул ҷудо карда мешаванд. Ҳар як фармон бо нуқта-вергул анҷом меёбад.
- Тавсифи майдон бо номи худ оғоз мешавад ва пас аз он навъи он, CONSTRAINT ва арзиши пешфарз.
id BIGINT AUTO_INCREMENT PRIMARY KEY
– майдони id-и навъи бутун калиди ибтидоӣ ва ҳисобкунаки афзоянда мебошад (барои ҳар як сабти нав барои майдони id, қимате тавлид мешавад, ки аз арзиши қаблан барои ин ҷадвал сохташуда як калонтар аст).
cash DECIMAL(15,2) NOT NULL DEFAULT 1000
– майдони нақдӣ, даҳӣ, 15 рақам пеш аз нуқтаи даҳӣ ва ду баъд аз он (маълумоти молиявӣ, масалан, доллар ва сент). Қиматҳои NULL-ро қабул карда наметавонад. Агар ягон арзиш дода нашавад, он арзиши 1000-ро мегирад.
about VARCHAR(255) NULL
– майдони дар бораи сатри то 255 аломат, метавонад арзишҳои холӣ қабул кунад.
Дар хотир доред, ки мо метавонем як қисми шартҳои
COSTRAINT- ро пас аз сохтани ҷадвал муқаррар кунем. Биёед сохтори тағир додани сохтори ҷадвал ва майдонҳои онро баррасӣ кунем:
ALTER TABLE table_name ADD COSTRAINT constraint_name CHECK (шарт) бо истифода аз мисолҳо:
CHECK(tradingMethod IN (1,2,3))
- майдони tradingMethod танҳо арзишҳои 1,2,3-ро гирифта метавонад
CHECK(changeProbability <= 100 AND changeProbability > 0)
- Майдони тағирот эҳтимолияти метавонад арзишҳои бутунро дар диапазони аз 1 то 100 қабул кунад
Муносибатҳои байни ҷадвалҳо
Барои таҳлor тавсифи муносибатҳои байни ҷадвалҳо, биёед ба эҷоди share_rates назар андозем:
CREATE TABLE share_rates(
id BIGINT AUTO_INCREMENT PRIMARY KEY,
operDate datetime NOT NULL,
share BIGINT NOT NULL,
rate DECIMAL(15,2) NOT NULL
);
ALTER TABLE share_rates ADD FOREIGN KEY (share) REFERENCES shares(id)
Истинод ба арзишҳои ҷадвали дигар метавонад ба таври зайл муқаррар карда шавад:
ALTER TABLE
table_from_which_referred
ADD FOREIGN KEY
(майдони_ки_истинодшуда)
REFERENCES
ҷадвали_ба_кадом_истисношуда (майдони_ки_истинодшуда) Бигзор дар
саҳмияҳо мо сабтҳои саҳмияҳо дорем, масалан, барои id=50 мо саҳмияҳои Microsoft-ро бо нархи ибтидоии 17,5, дельта 20 ва имкони тағирёбии 4%. Барои ҷадвали
share_rates мо се хосияти асосиро мегирем:
- Мо танҳо лозим аст, ки арзиши калиди id-ро аз ҷадвали саҳмияҳо дар майдони мубодила нигоҳ дорем, то онро барои гирифтани маълумоти боқимонда (ном ва ғ.) аз ҷадвали саҳмияҳо истифода барем.
- Мо наметавонем нархро барои таблиғи мавҷуда эҷод кунем. Шумо наметавонед арзиши ғайримавҷудро ба майдони мубодила дохил кунед (барои он дар ҷадвали саҳмияҳо бо ин ID сабт мавҷуд нест), зеро байни ҷадвалҳо ҳеҷ гуна мукотиба вуҷуд нахоҳад дошт.
- Мо наметавонем сабти саҳмияҳоро дар саҳмияҳое, ки нархҳо дар share_rates муқаррар шудаанд, нест кунем.
Ду нуқтаи охир барои таъмини тамомияти маълумоти захирашуда хизмат мекунанд. Шумо метавонед эҷоди ҷадвалҳои SQL-и эмуляцияи мо ва намунаҳои дархостҳои SQL-ро дар татбиқи Java усулҳои синфҳои мувофиқ бо истифода аз истинод ба анбори github дар охири мақола бубинед.
Қисми сеюм
GO TO FULL VERSION