JavaRush /Блоги Java /Random-TG /Қисми 2. Сохтори DBMS, ҷадвалҳо ва намудҳои додаҳо
Marat Sadykov
Сатҳи

Қисми 2. Сохтори DBMS, ҷадвалҳо ва намудҳои додаҳо

Дар гурӯҳ нашр шудааст
Қисми якум
Қисми 2. Сохтори DBMS, ҷадвалҳо ва намудҳои додаҳо - 1
Мо эҷоди эмулятори оддии биржаи худро идома медиҳем. Ин аст он чизе ки мо мекунем:
  • Биёед диаграммаи ташк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 номида мешавад .
Дар асл, ҷадвали саҳмияҳо: Қисми 2. Сохтори DBMS, ҷадвалҳо ва намудҳои додаҳо - 2 Оё дар ин ҳолат номи саҳмияро ҳамчун калид истифода бурдан мумкин аст? Умуман - бале, аммо эҳтимол дорад, ки баъзе ширкатҳо саҳмияҳои гуногунро бароварда, онҳоро танҳо бо номи худ даъват кунанд. Дар ин ҳолат, дигар беназир нахоҳад буд. Дар амал, калиди ибтидоии сунъӣ аксар вақт истифода мешавад. Розӣ шавед, истифодаи номи пурра ҳамчун калиди ягона дар ҷадвале, ки сабтҳои одамонро дар бар мегирад, беназириро таъмин намекунад. Инчунин истифодаи омезиши номи пурра ва санаи таваллуд.

Намудҳои маълумот дар 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 нишон медиҳад:
Қисми 2. Сохтори МДМ, ҷадвалҳо ва намудҳои додаҳо - 3

Эҷоди ҷадвалҳо дар 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)
Қисми 2. Сохтори МБМ, ҷадвалҳо ва намудҳои додаҳо - 4
Истинод ба арзишҳои ҷадвали дигар метавонад ба таври зайл муқаррар карда шавад: ALTER TABLEtable_from_which_referred ADD FOREIGN KEY(майдони_ки_истинодшуда) REFERENCESҷадвали_ба_кадом_истисношуда (майдони_ки_истинодшуда) Бигзор дар саҳмияҳо мо сабтҳои саҳмияҳо дорем, масалан, барои id=50 мо саҳмияҳои Microsoft-ро бо нархи ибтидоии 17,5, дельта 20 ва имкони тағирёбии 4%. Барои ҷадвали share_rates мо се хосияти асосиро мегирем:
  • Мо танҳо лозим аст, ки арзиши калиди id-ро аз ҷадвали саҳмияҳо дар майдони мубодила нигоҳ дорем, то онро барои гирифтани маълумоти боқимонда (ном ва ғ.) аз ҷадвали саҳмияҳо истифода барем.
  • Мо наметавонем нархро барои таблиғи мавҷуда эҷод кунем. Шумо наметавонед арзиши ғайримавҷудро ба майдони мубодила дохил кунед (барои он дар ҷадвали саҳмияҳо бо ин ID сабт мавҷуд нест), зеро байни ҷадвалҳо ҳеҷ гуна мукотиба вуҷуд нахоҳад дошт.
  • Мо наметавонем сабти саҳмияҳоро дар саҳмияҳое, ки нархҳо дар share_rates муқаррар шудаанд, нест кунем.
Ду нуқтаи охир барои таъмини тамомияти маълумоти захирашуда хизмат мекунанд. Шумо метавонед эҷоди ҷадвалҳои SQL-и эмуляцияи мо ва намунаҳои дархостҳои SQL-ро дар татбиқи Java усулҳои синфҳои мувофиқ бо истифода аз истинод ба анбори github дар охири мақола бубинед. Қисми сеюм
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION