
Кесте, жол, баған және NULL: алдымен бюджет моделін құрамыз
Жобадағы шот, санат, операция және лимит ұғымдарын ажыратып, мәннің болмауы мен нөлдің айырмасын үйренеміз. Синтаксиске дейін әр жол қандай бір фактіні сақтайтынын түсіну маңызды.
Бұл не үшін қажет
Нашар модель әр сұрауды деректің мағынасын болжауға мәжбүр етеді. Адам бір ұяшықтағы Азық-түлік / карта / 49800 жазуын түсінуі мүмкін, ал база оның қай бөлігі санат, шот немесе сома екенін білмейді.
Бейне. Бір жол — бір аяқталған сөйлем: «7-операция 10 қыркүйекте Карта шотынан Көлік санатына 6800 теңгеге жасалды». Бір жол бірнеше бөлек оқиғаны баяндаса, оны тексеру қиын.
Алдымен тұтас көрініс
SELECT id, happened_on, amount_tiyn, note
FROM transactions
ORDER BY happened_on, id;
Кестеде бір түрге жататын жолдар сақталады; баған мәннің қызметін белгілейді. id бастапқы кілті жолды тұрақты атайды. account_id және category_id сыртқы кілттері оны басқа кестелермен байланыстырады.
Талдау
accounts — ақша сақталатын орындар. categories кіріс пен шығыстың мағынасын және міндетті емес лимитті береді. transactions — болған ақша оқиғалары. Айлық есеп — фактілердің тағы бір көшірмесі емес, есептелетін нәтиже.
NULL «мән белгісіз немесе қолданылмайды» дегенді білдіреді. Жалақы лимиті NULL, өйткені шығыс лимиті кіріске қолданылмайды. Нөл басқа мағына береді: мүлде жұмсауға болмайды. = NULL орнына IS NULL жазыңыз:
SELECT name
FROM categories
WHERE monthly_limit_tiyn IS NULL;
SQL логикасында TRUE, FALSE және UNKNOWN бар. Сондықтан күнді тексеру шарты date(...) IS NOT NULL бөлігін де қамтиды.
Сабақ картасы
Өз сөзіңізбен айтыңыз
transactionsкестесінің бір жолы қандай фактіні сақтайды?NULLнөлден және бос жолдан несімен ерекшеленеді?- Жолға тұрақты кілт не үшін қажет?
Тапсырма
Айлық лимиті жоқ санаттардың тек name және kind бағандарын шығарыңыз.
Жобадағы орны
Модель дерекқор сұлбасына айналады. Есеп бастапқы операциялардан есептеледі, сондықтан бір қорытындының екі көшірмесін сәйкестендіру қажет болмайды.
Жауаптар
Жауаптарды көрсету
SELECT name, kind
FROM categories
WHERE monthly_limit_tiyn IS NULL;
Пікірлер (0)
Пікір қалдыру үшін кіріңіз →
Әзірге пікір жоқ. Бірінші болыңыз.