29 Ekim 2014 Çarşamba

Bilginin Kaynakları Sorunu Usçuluk

FELSEFE Ders Notları 2
Epistemoloji
Bilginin Kaynakları Sorunu Usçuluk

Güvenilir ve kesin bilginin temelinde insan aklının yattığı veya gerçekliğin kavranmasının ancak akıl yoluyla olabileceği tezini ileri süren akıma usçuluk denir.

Deneyimciliğin karşıtı olan usçuluğa göre bilgimizin tek kaynağı duyu verileri veya algılar değildir. Felsefi bir görüş olan usçuluk insan aklının kendisinin bilginin temel bir kaynağı olduğunu veya bilginin ortaya çıkmasında insan aklının yapısının özsel ve şekillendirici rol oynadığını savunur.

"Akılcı" Deyimi günlük dilde sıkça dile getirilir ve "mantıklı" ,"zeka belirtisi taşıyan" ,"akla uygun yöntemler izleyen" gibi anlamlara gelir.

Usçuluk akımına göre, insan aklının kendisi bilginin temel kaynağıdır.

Nous, çağdaş dillere çevrilmesi oldukça zor bir deyimdir. "zihin", "kavrama", "sezgi" ve "akıl" olarak çevrilmiştir. Bu çevirilere bakınca "nous"un oldukça öznel bir yön içerdiği sanılabilir. 2500 yıl önce yaşamış olan Anaxsagoras, nous'un evrenin başlangıcındaki kaos'u düzenleyen ve evrenin düzen içinde bir başlangıç yapmasını sağlayan bir tür güç olduğunu düşünmüştür. 

Eski Yunan'da "nous" kavramının kullanımları:
  • Ruhun ölümsüz ve akıl içeren kısmı
  • Tanrısallığa yakın olan işlev
  • Algılanamayan maddesel güç
  • Akıl
Anaxsagoras'ın Nous'u: Ruhsal veya zihinsel olmaktan ziyade, algılanamayan maddesel bir güç veya ilke olarak tasarlanmıştı. Ona göre, görülebilen nesnelerden daha "ince" bir yapıda olan nous, başlangıçtaki işlevine ek olarak, nesnelere girerek onların devinimini veya gelişimini düzenlemekteydi. Anaxsagoras'ın temel felsefi amacının, evrenin "akılsal" yönünü açıkca ifade etmek ve evrendeki değişimlerin olanaklılığını açıklamak olduğunu söyleyebiliriz.

Platon, nous'u ruhun ölümsüz ve akıl içeren kısmı olaran tanımlamıştır.

Platon'u izleyen Aristoteles, hem sonlu hemde ölümsüz yönleri olduğuna inandığı nous'u bizim anladığımız "akıl" kavramına yakın bir şekilde ele alır ve bu kavramı "algı"dan ayırır. Aristoteles'e göre, insanlardan bulunan nous'un ölümden sonrada varlığını sürdürebilen kısmı , anlama ve bilme işlevlerini olanaklı kılar ve bizi diğer canlılardan farklı bir konuma getirir.

Modern felsefenin kurucusu olan Descartes, önde gelen usçulardandır. Pek çok usçu gibi Descartes'da insan zihninin doğum anında belli "içeriğe" sahip olduğunu düşünür. İdealarımızın bazıları algısal yollardan oluşur ancak Descartes'a göre, çok önemli bazı idea türleri deneyim yoluyla edinilemez. Tanrı ideası veya mükemmel bir daire  ideası bu türden bir bilişsel durumdur.

Descartes'a göre, algı ve matematik de dahil olmak üzere, bize en güvenilir görünen bilgi türlerinin doğruluğundan bile şüphelenme olasılığı bulunmaktadır.

Düşünme işlevi düşünen bir şeyin olmasını gerektirir. Ve bu şekilde Descartes o bilinen sloganına ulaşır: "Düşünüyorum, o halde varım." (Cogito ergo sum.). Descates'e göre insan bilgisinin en önemli unsuru budur.

David Hume'a göre, biz temel olarak iki tür  bilgi sahibi olabiliriz. Duyu verilerine dayanan deneyimsel bilgi ve mantıksal bilgi. Eğer bu doğruysa metafiziğin veya genel olarak felsefenin herhangi bir bilgi verme olasılığınınolmadığı ortaya çıkar. Bunun nedeni, felsefe yaparken kullanılan önermelerin ne dünyada gözlemlenebilen olgulara ne de mantıksal bağıntılara karşılık gelmesidir. Kant, deneyimciliğin bu yönüne karşı çıkar ve felsefenin veya metafiziğin olanaklı olduğunu savlar.

Kant'ın önerisi, daha önce denenmemiş bir "düşünsel deney" yapmaktır. Bu deney aynı Kopernik'in dünya merkezli astronomik sistem yerine güneş merkezli sistemi önermesi gibi, nesnel merkezli metafizik projeler yerine öznenin bilişsel rolünü merkeze alan bir kuramı öne sürmektir. Kant'ın devrimsel görüşüne göre bilen özge edilgen değil etkendir. Başka bir deyişle, "öznenin zihinselliği" bizim neyi nesne olarak aldığımız ve bildiğimiz konusunda belirleyici rol oynar. Bu anlamda, geleneksel epistemolojik görüşler önemli bir hata yapmaktadırlar.

David Hume'un ve diğer deneyimcilerin haklı olduğu bir nokta, "bilginin malzemesinin" algı verileri yoluyla geldiğidir.

Kant, her varlık türüne göre görünen dünyanın, o varlık türünün zihinsel özellikleri tarafından belirlendiğini savlar. Kant, öncelikle analitik ve sentetik cümleler arasında bir ayrım olduğunu söyler. Analitik cümlelerde cümlenin yüklemi öznede zaten var olan bilgilere yeni bilgi katmaz. "Siyah kediler siyahtır." ve "Bekarlar evli olmayan insanlardır." analitik cümlelerdir çünkü bu cümlelerin özneleri yüklem bölümünde  içerilen tüm bilgileri zaten içerirler.

Analitik ve Sentetik ayrımı: Cümle yapısı ile ilgilidir. Analitik cümleler dünyaya ilişkin yeni gözlemsel bilgiler içermezken sentetik cümleler yüklemleri öznede içerilen bilgilerin ötesine geçen cümlelerdir.

Sentetik cümleler bizim dünyaya ilişkin bilgimizi genişletirler. Analitik cümleler ise ya içeriksel olarak boşturlar ya da kavramsal arası ilişkileri ortaya koyarlar. Yani deneyimsel olarak yeni bir bilgi taşımazlar.

Epistemolojik açıdan önemli bir başka ayrımda "a priori" ve "a posteriori" ayrımıdır. Analitik ve Sentetik çifti cümlelerin yapısını ilgilendirir. A priori ve a posteriori ayrımı ise bilginin edinilme tarzının ayrımıdır.

A priori: bilgi evrensel olarak doğrudur. Ancak tek tek deneyimler yoluyla kazanılamaz.

Aposteriori: Bilginin kazanılması için somut deneyim parçaları gerekir. Gözlemsel bilgilerimizin tümü a posterioridir.

Bu iki deyim latincede olup, a priori deneyimi önceleyen, a posteriori deneyimle gelen anlamlarında kullanılır.

Sentetik a priori, diğer olası bileşimler arasında en ilginç ve felsefi açıdan en önemi olandır.

25 Ekim 2014 Cumartesi

SQL'de VIEW Oluşturma ve Kullanımı

Temel amacı tabloların içerisinden veri kümesi getirip ortaya çıkan sonucu sanal tabloymuş gibi yeniden sorgulayabilmemizi sağlamaktır. Kısaca SQL'de verilerimizin isteğe bağlı alanlara ve tablolara göre ekranımızda görünteleme işlemi yapmamızı sağlar. Kullanıcının istediği verilere göre gösterim yapmak veya raporlamak SQL VIEW sayesinde kolaylıkla halledilmektedir.

Veritabanı VIEW ile oluşan datayı saklamaz. Bir VIEW geçen SQL deyimi her çalıştırıldığında ilgili VIEW sanal tabloyu yeniden oluşturur. VIEW üzerinde yapılan değişikler kendilerini oluşturan kaynak tabloları da etkiler ve aynı değişiklikler kaynak tablolara da yansır. VIEW kullanmanın önemli nedenlerinden bir tanesi sağladığı güvenliktir. Örneğin tablolarınızın tamanının görünmesini istemediğiniz zamanlarda sanal tablo kullanıp tablolarınızın tamamının görünmesini engelleyebilirsiniz. Karmaşık sorguları basitleştirmek, sorgu süresini kısaltmak ve ağ üzerindeki trafiği düşürmek, erişim izinlerini düzenlemek ve farklı sunuculardaki benzer verileri karşılaştırmak içinde kullanılır.
Oluşturulan VIEW'ler Object Explorer kısmında database/Views altında toplanır.

VIEW Oluşturma: VIEW oluşturmak için CREATE VIEW ifadesi kullanılır.

Genel Yapısı:
CREATE VIEW view_adı 
AS 
SELECT * FROM tablo_adi

Örnek1:
CREATE VIEW deneme_view 
SELECT EmployeeID, FirstName, LastName
FROM Employees

Örneğimizde Northwind veritabanında Employees tablosundan sadece "EmployeeID, FirstName, LastName" kullanarak yeni bir view oluşturalım ve "select * from deneme_view" ile sorgumuzu çalıştıralım.

Örnek2:
CREATE VIEW deneme2_view
AS
SELECT FirstName,LastName
FROM Employees
WHERE FirstName LIKE 'a%'
WITH CHECK OPTION
Bu örneğimizde diğerinden farklı olarak bir şart belirttik ve WITH CHECK OPTION ifadesini kullandık.
WITH CHECK OPTION: SQL Server'da VIEW tanımlarken örneğimizdeki gibi WHERE anahtar sözcüğüyle bir şart belirtmiş olabiliriz. Böyle bir VIEW nesnesini kullanırken de VIEW üzerinden tablolarımıza "INSERT, UPDATE, DELETE" işlemleri gerçekleştirebiliriz. 

Şimdi diyelimki oluşturduğumuz VIEW'e bir INSERT yapmamız gerekti;
insert into deneme2_view values('Bayraktar','İbrahim')
eklenme yapılmak istendiğinde "The attempted insert or update failed because the target view either specifies WITH CHECK OPTION or spans a view that specifies WITH CHECK OPTION and one or more rows resulting from the operation did not qualify under the CHECK OPTION constraint. The statement has been terminated." hatasıyla karşılaşırız (VIEW oluştururken kullandığımız WITH CHECK OPTION ifadesinden dolayı 'a' ile başlamayan bir ekleme yapılamaz)

VIEW Silme: VIEW'leri silmek için DROP ifadesi kullanılır.

Genel Yapısı:
DROP VIEW view_adı
Örnek3:
DROP VIEW deneme2_view

VIEW Değişiklik Yapma: VIEW'ler üzerinde değişiklik yapmak için ALTER ifadesi kullanılır.

Genel Yapısı:
ALTER VIEW view_adı 
WITH seçenekler 
AS SELECT ifadesi

with schemabinding ifadesi ile kilitleme:
with schemabinding ifadesi VIEW'in bağlı olduğu tablodaki kolonları kilitleyip o kolonların silinmesini ve değişiklik yapılmasını engeller.

Genel Yapısı:
ALTER VIEW view_adı 
WITH schemabinding 
AS 
SELECT ifadesi

Örnek3:
CREATE VIEW deneme3_view
WITH SCHEMABINDING --sütunla ilgili bir değişiklik yapılması engellenir
AS
SELECT FirstName,LastName,City
FROM dbo.EMPLOYEES


with encryption ifadesi ile gizleme: 
VIEW'leri şifreleyip sorguların görünür olmasını engeller. Kaynakların  gizliliğini sağlayan koddur, Kullanıcı sadece oluşturulan VIEW ile ilgili verilere erişebiliR kaynak tablolarla ilgili hiç bir bilgiye ulaşamaz.

Genel Yapısı:
ALTER VIEW view_adı 
WITH encryption 
AS 
SELECT ifadesi

Örnek4:
CREATE VIEW deneme4_view
WITH ENCRYPTION --kaynak gizleme ve pasif design
AS
SELECT * FROM PRODUCTS

with encryption ifadesi kullanıldığında Object Explorer'da VIEW üzerinde kilit işareti belirir ve sağ click yapıldığından Design seçeneğinin pasifleştiğini görebiliriz.

SQL'de sp_helptext System Prosedürünün Kullanımı

sp_helptext prosedürü bizim tanımladığımız ya da sistemde bulunan objelerin tanımlamalarını text formatında gösterir. Böylece istediğimiz objenin tüm içeriğini nerede olduğunu aramadan direk  text içeriği ekrana döndürebiliriz.

Genel Yapısı:
exec sp_helptext '@objname'

Şimdi bir örnek ile olayı daha iyi kavrayalım. SP_ORNEK_1 sp'sinin içeriğini görüntülemek için;
use Northwind
exec sp_helptext 'SP_ORNEK_1'
yazmamış yeterli olacak. Bu komutun sonucunda ilgili Prosedürün text içeriği ekrana dökülür. SQL Server'da bir nesnenin SQL kodunu merak ediyorsanız sp_helptext bizim için en iyi araç. Tabi bu sp ile SQL Server'ın system sp, view ve diğer bileşenlerinin kodunu da görüntüleyebilirsiniz. Böylelikle merak ettiğiniz herhangi bir nesnenin nasıl kodlandığı incelenebilir.

use Northwind
exec sp_helptext 'Sales by Year'
Northwind veritabanı ile birlikte gelen "Sales by Year" isimli Prosedürün text içeriğini alalım.

SQL'de sp_help System Prosedürünün Kullanımı

sp_help System Prosedürü SQL'de  veritabanı ve sistem üzerindeki tüm tablolar, view ler, stored procedure ler gibi nesne tipleri hakkında ayrıntılı bilgi almamızı sağlar.

Genel Yapısı:
exec sp_help '@objname'

sp_help ile Nesneler hakkında bilgi almak için:  
use Northwind
exec sp_help
Örneklerde sıklıkla kullandığım Northwind veritabanındaki herbir objenin bilgilerini listeleyelim.

sp_help ile istenilen Obje hakkında bilgi almak için: 
use Northwind
exec sp_help 'Customers'
Northwind veritabanındaki Customers tablosu ile ilgili bilgileri listeleyelim.

SQL'de sp_rename System Prosedürü ile Nesne ismi Değiştirmek

sp_rename System Prosedürünü SQL'de  nesnelerimizin adlarını değiştirmek amacıyla kullanırız.

NOT: Oluşturulan her bir nesne nin bir id si vardır ve SQL Server'da nesneler id leri ile saklanırlar.

Genel Yapısı
exec sp_rename @object_name, @new_object_name, @object_type

sp_rename ile Tablo adının değiştirilmesi :   
use KITAPLAR
SELECT * FROM Fantastikkurgu

SELECT object_id('Fantastikkurgu')
exec sp_rename  'Fantastikkurgu','Bilimkurgu' 

--Fantastikkurgu tablomuz Bilimkurgu olarak değişecektir
işlem sonrasında SELECT * FROM Fantastikkurgu sorgusunu çalıştırdığımızda Invalid Object Name 'Fantastikkurgu' hatası döndürecektir.  Sorgumuzu SELECT * FROM Bilimkurgu olarak çalıştırdığımızda ise Fantastikkurgu tablosunda mevcut olan kolonları göreceksiniz. Benzer şekilde Object Explorer üzerinden tables'a refresh yaparsanız yine tablo adının değiştiğini görebilirsiniz.

object_id system function'ını kullanarak objenin id'sini öğrenebiliriz
object_id (objectname) null döndürüyorsa o isimde nesne ilgili database de yok demektir.
 
sp_rename ile Kolon adının değiştirilmesi :  
Yukarıdaki örnekte adını değiştirdiğimiz tablonun "Yazar" kolonunu "müellif" olarak değiştirelim. sp_rename prosedürünün default'u "object" olan bir parametresi daha var. Kolonlar, sysobjects de yer almazlar ve birer database objesi değillerdir ve tablo ismi olmadan da birşey ifade etmezler. x tablonun y kolonu diye saklanırlar ve çağırılırlar. Bu nedenle adını değiştirdiğimiz nesnenin kolon tipinde olduğunu ve hangi tabloya ait olduğunu da belirtmemiz gereklidir.

exec sp_rename 'Bilimkurgu.Yazar','müellif','COLUMN'
Bilimkurgu tablomuza ait olan Yazar isimli kolonu müellif olarak değiştirdik. SELECT * FROM Bilimkurgu  sorgusu ile kolon adının değiştiğini görebiliriz. 

sp_rename ile Veritabanı adının değiştirilmesi:
Veri tabanının adını değiştirmek için sp_renamedb prosedürü kullanılır.

sp_renamedb 'KITAPLAR', 'ESERLER' veya sp_renamedb KITAPLAR , ESERLER
“KITAPLAR” ismindeki veri tabanımızın yeni adı “ESERLER” olacaktır.

sp_rename ile Constraint (Kısıtlama) adının değiştirilmesi:
Constraint adı değiştirme tablo adı değiştirme ile aynıdır. Bir veri tabanında aynı isimde birden fazla tablo olamayacağı için aynı isimde birden fazla Constraint olamaz. Bu nedenle Constraint adını değiştirince hangi tabloya aittir diye bakmıyoruz.

CREATE TABLE [EPOSTA] 
( 
[ADI SOYADI] VARCHAR(50),
 EPOSTA VARCHAR(200) 
 CONSTRAINT EPOSTA_KONTROL CHECK(EPOSTA LIKE '%@%.edu.tr') 
)
Örnek EPOSTA tablomuzda EPOSTA_KONTROL adında bir constraint (kısıtlama) mevcut. Bu constraint eposta içinde "@" işareti var mı ve eposta adresi ".edu.tr" ile bitiyor mu diye kontrol ediyor. Bu constraint in adını değiştirmek için sp_rename kullanalım.

exec sp_rename EPOSTA_KONTROL, MAIL_KONTROL
"EPOSTA_KONTROL" olan constraint adı "MAIL_KONTROL" olarak değişecektir.

Copyright 2013-2017 | İbrahim BAYRAKTAR /dev/null Web Günlüğü