[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:database\u002Fdata-modeling":4,"config":215},null,{"field_key":5,"field_name":6,"seniority":7,"topic_key":8,"topic_name":9,"spec_key":7,"spec_name":7,"locale":10,"cell_total":11,"field_total":12,"seniorities":13,"topics":17,"specs":115,"samples":129},"database","Veritabanı","","data-modeling","Data Modeling","tr",75,2475,[14,15,16],"junior","mid","senior",[18,21,22,25,28,31,34,37,40,43,46,49,52,55,58,61,64,67,70,73,76,79,82,85,88,91,94,97,100,103,106,109,112],{"key":19,"name":20,"count":11},"backup-recovery","Backup Recovery",{"key":8,"name":9,"count":11},{"key":23,"name":24,"count":11},"indexing","Indexing",{"key":26,"name":27,"count":11},"mongodb-aggregation","Mongodb Aggregation",{"key":29,"name":30,"count":11},"mongodb-indexes-queries","Mongodb Indexes Queries",{"key":32,"name":33,"count":11},"mongodb-operations","Mongodb Operations",{"key":35,"name":36,"count":11},"mongodb-replication-sharding","Mongodb Replication Sharding",{"key":38,"name":39,"count":11},"mongodb-schema-modeling","Mongodb Schema Modeling",{"key":41,"name":42,"count":11},"mongodb-transactions-consistency","Mongodb Transactions Consistency",{"key":44,"name":45,"count":11},"mysql-indexes","Mysql Indexes",{"key":47,"name":48,"count":11},"mysql-innodb-transactions","Mysql Innodb Transactions",{"key":50,"name":51,"count":11},"mysql-operations","Mysql Operations",{"key":53,"name":54,"count":11},"mysql-query-optimization","Mysql Query Optimization",{"key":56,"name":57,"count":11},"mysql-replication-scaling","Mysql Replication Scaling",{"key":59,"name":60,"count":11},"mysql-types-constraints","Mysql Types Constraints",{"key":62,"name":63,"count":11},"nosql-models","Nosql Models",{"key":65,"name":66,"count":11},"performance-tuning","Performance Tuning",{"key":68,"name":69,"count":11},"pg-indexes","Pg Indexes",{"key":71,"name":72,"count":11},"pg-mvcc-vacuum","Pg Mvcc Vacuum",{"key":74,"name":75,"count":11},"pg-operations","Pg Operations",{"key":77,"name":78,"count":11},"pg-query-planning","Pg Query Planning",{"key":80,"name":81,"count":11},"pg-transactions-locking","Pg Transactions Locking",{"key":83,"name":84,"count":11},"pg-types-constraints","Pg Types Constraints",{"key":86,"name":87,"count":11},"query-optimization","Query Optimization",{"key":89,"name":90,"count":11},"redis-cluster-sharding","Redis Cluster Sharding",{"key":92,"name":93,"count":11},"redis-data-structures","Redis Data Structures",{"key":95,"name":96,"count":11},"redis-expiration-eviction","Redis Expiration Eviction",{"key":98,"name":99,"count":11},"redis-persistence","Redis Persistence",{"key":101,"name":102,"count":11},"redis-replication-sentinel","Redis Replication Sentinel",{"key":104,"name":105,"count":11},"redis-transactions-scripting","Redis Transactions Scripting",{"key":107,"name":108,"count":11},"replication-scaling","Replication Scaling",{"key":110,"name":111,"count":11},"security-access","Security Access",{"key":113,"name":114,"count":11},"transactions-isolation","Transactions Isolation",[116,120,123,126],{"key":117,"name":118,"count":119},"mongodb","MongoDB",450,{"key":121,"name":122,"count":119},"mysql","MySQL",{"key":124,"name":125,"count":119},"postgresql","PostgreSQL",{"key":127,"name":128,"count":119},"redis","Redis",[130,148,161,174,188,202],{"id":131,"topic":9,"difficulty":132,"body":133,"options":134,"correct_key":139,"explanation":147},"019f56bb-b5d8-70ae-911a-2ca3e7a4624c",2,"Bir veri modelinde PRIMARY KEY, UNIQUE ve FOREIGN KEY kısıtlarının rolleri nasıl farklılaşır?",[135,138,141,144],{"key":136,"text":137},"a","PRIMARY KEY ve UNIQUE ikisi de satırı tanımlar; FOREIGN KEY referans verilen satırın verisinin kopyasını tutar",{"key":139,"text":140},"b","PRIMARY KEY satırın ana tanımlayıcısıdır; UNIQUE alternatif teklik sağlar; FOREIGN KEY başka bir tablonun anahtarına bağlar",{"key":142,"text":143},"c","Üçü de kendi tablosunda teklik zorunlu kılar ve hiçbiri NULL değere izin vermez",{"key":145,"text":146},"d","PRIMARY KEY ve FOREIGN KEY her zaman aynı kolon olmalıdır; UNIQUE yalnızca bir index ipucudur","Primary key seçilen ana tanımlayıcıdır (tablo başına bir tane, unique + NOT NULL); UNIQUE alternatif\u002Faday anahtarlarda teklik sağlar ve NULL'a izin verebilir; foreign key başka bir tablonun anahtarını referans alarak referential integrity zorunlu kılar. Foreign key referans verilen veriyi kopyalamaz (a); UNIQUE salt index ipucu değil gerçek bir kısıttır ve NULL'a izin verebilir, bu yüzden (c) ve (d) yanlıştır.",{"id":149,"topic":9,"difficulty":132,"body":150,"options":151,"correct_key":145,"explanation":160},"019f56bb-b5d8-784a-9f32-e74f88a36980","Natural key ile surrogate key arasındaki farkı en iyi ne tanımlar?",[152,154,156,158],{"key":136,"text":153},"Natural key sistem tarafından üretilir; surrogate key ise gerçek dünya verisinden alınır",{"key":139,"text":155},"Surrogate key her zaman composite olmalıdır, natural key ise her zaman tek kolondur",{"key":142,"text":157},"Natural key'ler join'de daha hızlıdır çünkü hiçbir zaman index'lenmeleri gerekmez",{"key":145,"text":159},"Natural key anlamlı bir gerçek dünya özniteliğidir; surrogate key sistemin ürettiği yapay bir değerdir","Natural key var olan anlamlı veriyi kullanır (ör. ISBN, email); surrogate key ise iş anlamı olmayan yapay bir değerdir (ör. otomatik üretilen integer veya UUID). (a) ikisini ters çevirir, surrogate key'ler genelde tek kolondur ve composite olmak zorunda değildir (b), natural key'ler de her anahtar gibi index gerektirir (c).",{"id":162,"topic":9,"difficulty":132,"body":163,"options":164,"correct_key":142,"explanation":173},"019f56bb-b5d9-736d-bb72-1c85af6ccec7","Composite primary key nedir?",[165,167,169,171],{"key":136,"text":166},"Aynı anda iki tablo boyunca otomatik artan bir primary key",{"key":139,"text":168},"Yedek görevi görsün diye ikinci bir kolona kopyalanan bir primary key",{"key":142,"text":170},"İki veya daha fazla kolondan oluşan ve kombinasyonu unique olması gereken bir primary key",{"key":145,"text":172},"Kolonlarından en az biri doluysa NULL olabilen bir primary key","Composite key birkaç kolonu birlikte kullanır; teklik her kolonda ayrı ayrı değil kombinasyonda zorunlu kılınır. Junction tablolarda yaygındır, ör. (student_id, course_id). Primary key'in hiçbir parçası NULL olamaz, bu yüzden (d) yanlıştır; ne yedek kopyadır (b) ne de tablolar arası auto-increment (a).",{"id":175,"topic":9,"difficulty":176,"body":177,"options":178,"correct_key":136,"explanation":187},"019f56bb-b5d9-7e0c-94de-9663897f0b98",1,"Birinci normal form (1NF) neyi şart koşar?",[179,181,183,185],{"key":136,"text":180},"Her kolon tek bir atomik değer tutar; liste veya tekrar eden grup olmaz",{"key":139,"text":182},"Her tablo en fazla üç kolonla sınırlıdır",{"key":142,"text":184},"Tüm metin kolonları sabit uzunluklu CHAR tipinde saklanır",{"key":145,"text":186},"Her tablo başka bir tabloyla en az bir foreign-key ilişkisine katılır","1NF çok değerli ve tekrar eden kolonları yasaklar: her hücre tek bir atomik değer tutar ve tekrar eden grup bulunmaz. Kolon sayısı (b), fiziksel CHAR saklama (c) ve ilişki zorunluluğu (d) normal formlarla ilgisizdir.",{"id":189,"topic":9,"difficulty":190,"body":191,"options":192,"correct_key":142,"explanation":201},"019f56bb-b5db-71d5-8180-900d2d74a687",3,"`order_items(order_id, product_id, quantity, product_name)` tablosunun composite primary key'i `(order_id, product_id)` ve `product_name` yalnızca `product_id`'ye bağlı. Sorun ve çözümü nedir?",[193,195,197,199],{"key":136,"text":194},"1NF'i ihlal eder çünkü product_name tekrar eder; her değeri kendi satırına ayır",{"key":139,"text":196},"Transitive dependency ile 3NF'i ihlal eder; quantity'yi başka tabloya taşı",{"key":142,"text":198},"2NF'i ihlal eder: product_name anahtarın bir parçasına partial dependency'dir; bir products tablosuna taşı",{"key":145,"text":200},"Hiçbir normal form'u ihlal etmez; geniş bir sipariş satırı tablosu her zaman kabul edilebilir bir tasarımdır","2NF, anahtar olmayan her kolonun composite key'in tamamına bağlı olmasını ister. `product_name` yalnızca anahtarın parçası olan `product_id`'ye bağlıdır — partial dependency — dolayısıyla product_id ile anahtarlanan bir `products` tablosuna aittir. Değerler atomiktir, yani 1NF sorunu değildir (a) ve partial dependency, 3NF'in ele aldığı transitive dependency'den farklıdır (b).",{"id":203,"topic":9,"difficulty":190,"body":204,"options":205,"correct_key":145,"explanation":214},"019f56bb-b5db-783e-b2a7-abde2a03ca44","`employees(emp_id, name, dept_id, dept_name)` tablosunun tek kolonluk primary key'i `emp_id`. Burada `dept_name`, `dept_id`'ye; `dept_id` de `emp_id`'ye bağlı. Bu nedir ve 3NF ne öngörür?",[206,208,210,212],{"key":136,"text":207},"Partial dependency; emp_id tek anahtar olduğu için zaten çözülmüştür",{"key":139,"text":209},"Multi-valued dependency; çözümü için fourth normal form (4NF) gerekir",{"key":142,"text":211},"Sorun yok, çünkü dept_id primary key olmadığı sürece dept_name kalabilir",{"key":145,"text":213},"Transitive dependency; dept_name'i dept_id ile anahtarlanan bir departments tablosuna taşı","`dept_name`, anahtara bağlı olan anahtar-olmayan bir kolona (`dept_id`) bağlıdır — transitive dependency; 3NF bunu dept_name'i bir `departments` tablosuna taşıyarak giderir. Tek kolonluk anahtarda partial dependency olmaz (a) ve bu, 4NF gerektiren multi-valued değil, functional\u002Ftransitive bir sorundur (b).",{"fields":216,"seniorities":391,"interview_shapes":392,"locales":397,"oauth":399,"question_count":402,"coach_enabled":403,"jd_match_enabled":403},[217,242,262,278,302,315,324,343,365,372,378,385],{"key":218,"name_tr":219,"name_en":219,"sort":176,"specializations":220},"backend","Backend",[221,224,227,230,233,236,239],{"key":222,"name":223,"field":218},"general","Genel",{"key":225,"name":226,"field":218},"go","Go",{"key":228,"name":229,"field":218},"python","Python",{"key":231,"name":232,"field":218},"java","Java",{"key":234,"name":235,"field":218},"csharp","C#\u002F.NET",{"key":237,"name":238,"field":218},"nodejs","Node.js",{"key":240,"name":241,"field":218},"php","PHP",{"key":243,"name_tr":244,"name_en":244,"sort":132,"specializations":245},"frontend","Frontend",[246,247,250,253,256,259],{"key":222,"name":223,"field":243},{"key":248,"name":249,"field":243},"javascript","JavaScript",{"key":251,"name":252,"field":243},"typescript","TypeScript",{"key":254,"name":255,"field":243},"react","React",{"key":257,"name":258,"field":243},"vue","Vue",{"key":260,"name":261,"field":243},"angular","Angular",{"key":263,"name_tr":264,"name_en":264,"sort":190,"specializations":265},"fullstack","Fullstack",[266,267,268,269,270,271,272,273,274,275,276,277],{"key":222,"name":223,"field":263},{"key":225,"name":226,"field":218},{"key":228,"name":229,"field":218},{"key":231,"name":232,"field":218},{"key":234,"name":235,"field":218},{"key":237,"name":238,"field":218},{"key":240,"name":241,"field":218},{"key":248,"name":249,"field":243},{"key":251,"name":252,"field":243},{"key":254,"name":255,"field":243},{"key":257,"name":258,"field":243},{"key":260,"name":261,"field":243},{"key":279,"name_tr":280,"name_en":280,"sort":281,"specializations":282},"devops-cloud","DevOps \u002F Cloud",4,[283,284,287,290,293,296,299],{"key":222,"name":223,"field":279},{"key":285,"name":286,"field":279},"aws","AWS",{"key":288,"name":289,"field":279},"gcp","GCP",{"key":291,"name":292,"field":279},"azure","Azure",{"key":294,"name":295,"field":279},"kubernetes","Kubernetes",{"key":297,"name":298,"field":279},"terraform","Terraform",{"key":300,"name":301,"field":279},"linux","Linux",{"key":303,"name_tr":304,"name_en":304,"sort":305,"specializations":306},"ai-engineer","AI Engineer",5,[307,308,309,312],{"key":222,"name":223,"field":303},{"key":228,"name":229,"field":303},{"key":310,"name":311,"field":303},"llm-rag","LLM\u002FRAG",{"key":313,"name":314,"field":303},"mlops","MLOps",{"key":5,"name_tr":6,"name_en":316,"sort":317,"specializations":318},"Database",6,[319,320,321,322,323],{"key":222,"name":223,"field":5},{"key":124,"name":125,"field":5},{"key":121,"name":122,"field":5},{"key":117,"name":118,"field":5},{"key":127,"name":128,"field":5},{"key":325,"name_tr":326,"name_en":327,"sort":328,"specializations":329},"mobile","Mobil","Mobile",7,[330,331,334,337,340],{"key":222,"name":223,"field":325},{"key":332,"name":333,"field":325},"ios-swift","iOS (Swift)",{"key":335,"name":336,"field":325},"android-kotlin","Android (Kotlin)",{"key":338,"name":339,"field":325},"flutter","Flutter",{"key":341,"name":342,"field":325},"react-native","React Native",{"key":344,"name_tr":345,"name_en":346,"sort":347,"specializations":348},"security","Güvenlik","Security",8,[349,350,353,356,359,362],{"key":222,"name":223,"field":344},{"key":351,"name":352,"field":344},"appsec","AppSec",{"key":354,"name":355,"field":344},"offensive-pentest","Offensive \u002F Pentest",{"key":357,"name":358,"field":344},"cloud-security","Cloud Security",{"key":360,"name":361,"field":344},"devsecops","DevSecOps",{"key":363,"name":364,"field":344},"blue-team-incident","Blue Team \u002F Incident",{"key":366,"name_tr":367,"name_en":368,"sort":369,"specializations":370},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[371],{"key":222,"name":223,"field":366},{"key":373,"name_tr":374,"name_en":374,"sort":375,"specializations":376},"data-engineer","Data Engineer",10,[377],{"key":222,"name":223,"field":373},{"key":379,"name_tr":380,"name_en":381,"sort":382,"specializations":383},"game-dev","Oyun Geliştirme","Game Development",11,[384],{"key":222,"name":223,"field":379},{"key":386,"name_tr":387,"name_en":387,"sort":388,"specializations":389},"ml-engineer","ML Engineer",12,[390],{"key":222,"name":223,"field":386},[14,15,16],{"junior":393,"mid":395,"senior":396},{"questions":394,"median_sec":3},20,{"questions":394,"median_sec":3},{"questions":394,"median_sec":3},[10,398],"en",[400,401],"google","github",21750,true]